Announcement

Collapse
No announcement yet.

Bilder (JPG) skalieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bilder (JPG) skalieren

    Hallo,
    ich habe derzeit ein Problem beim skalieren (verkleinern) von Bildern.
    Der Thumbnail zeigt im Vergleich zum Original Qualitätsverluste auf (Schärfe).
    Da ich in AWT nicht wirklich fit bin und bisher kein geeignetes Codesnippet in Netz gefunden habe bin ich derzeit ziemlich ratlos...
    Ein Problem, gehe von einem Image aus, kann ich das skalierte Bild (image.getScaledInstance) nicht wieder wegschreiben.
    Mit einem BufferedImage kann ich zwar den Thumbnail erzeugen, allerdings mit den o.g. Qualitätsverlusten.

    Hat jemand schon ein vergleichbares Problem und dies evtl sogar schon gelöst?
    Falls nötig kann ich meinen Quellcode nachliefern.

    Verzweifelter Gruss,
    Alex

  • #2
    evtl hilft dir das:
    Code:
        String extension = PictureUtils.getExtension(f);
            icon = null;
            ImageIcon thumbnail = null;
    
             if (extension != null) {
                //first check how big the image is, if it is to big, scale it with  SCALE_FAST option
                 if (extension.equals(PictureUtils.jpeg) ||
                    extension.equals(PictureUtils.jpg)) {
                     Image image =Toolkit.getDefaultToolkit().createImage(f.getAbsolutePath());
                     //image=image.getScaledInstance(scalesize, -1,Image.SCALE_FAST);
                     //image=image.getScaledInstance(scalesize, 20,Image.SCALE_FAST);
                     image=image.getScaledInstance(20, 15,Image.SCALE_FAST);
                     icon=new ImageIcon(image);
    
                } else if (extension.equals(PictureUtils.bmp)) {
                    Image image = PictureUtils.createImageIconFromBmp(f);
                    ImageIcon tmpIcon = new ImageIcon(image);
                    if (tmpIcon != null) {
                        if (tmpIcon.getIconWidth() > scalesize) {
                            icon = new ImageIcon(tmpIcon.getImage().
                                                      getScaledInstance(scalesize, -1,
                                                                  Image.SCALE_FAST));
                        } else { //no need to miniaturize
                            icon = tmpIcon;
                        }
                    }

    Comment


    • #3
      Hier sind einige Java Bibliotheken gelistet die Bilder lesen/schreiben können: http://schmidt.devlib.org/java/pixel...libraries.html

      BTW getScaledInstance() zu benutzen ist keine gute Idee - denn dadurch lädt man das Bild zwei mal.

      Thumbnail erzeigung:
      http://schmidt.devlib.org/java/save-jpeg-thumbnail.html
      und noch mehr:
      http://schmidt.devlib.org/java/creat...with-java.html

      Comment

      Working...
      X