# Ein JPEG-Bild in einem Label automatisch anpassen



## volk (12. Aug 2005)

Hallo zusammen,

ich würde gerne wissen, wie man aus einem Java-Programm ein JPEG-Bild automatisch die
Größe und Qualität ändern kann.

Szenario:


Das Java-Programm hat ein SWT- Label. Dieses Label wird verwendet, um ein JPEG-Bild anzuzeigen.

Das Label hat z.B. eine Größe von 120x220. Das Programm bietet den Benutzern ein FileExplorer an. Damit
kann der Bentzer ein Bild von der Platte auswählen. Die Bilder, die auf der Platte liegen sind wesentlich 
größe als 120x220! Ich kann den Benutzern zumuten, dass sie die Bilder vorher mit einem 
Bildverarbeitungsprogramm wie Photoshop Bilder entspr. anpassen! Das kostet viel Zeil und Nerven.

Wie kann ich jetzt eine Kopie von Größe 120x220 vom Originalbild erstellen und auch die Qualität 
entspr. anpassen? Ich möchte aber nicht, dass das Originalbild davon beeinflusst wird!

Gibt irgendwelche Java-Bibliotheken, die dieses Vorhaben untersützen?

Danke


----------



## nagash56 (12. Aug 2005)

Laut API gibts folgende Methode:

http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Image.html#getScaledInstance(int,%20int,%20int)


----------



## lin (12. Aug 2005)

> Ich kann den Benutzern zumuten, dass sie die Bilder vorher mit einem
> Bildverarbeitungsprogramm wie Photoshop Bilder entspr. anpassen! Das kostet viel Zeil und Nerven.


Wirklich? Das ist aber nicht so nett :bae: 

Und hier findest du noch n'bisserl code


----------



## volk (12. Aug 2005)

Vielen Dank für den Tipp 

Ich hoffe nur, dass Bilder zum Schluss nicht verzerrt sind!


----------



## lin (12. Aug 2005)

Wenn die Bilder 120*220px werden sollen und nicht verzerrt sein dürfen, dann muss gelten: Bildbreite/a = 120 und Bildhöhe/a = 220
Ansonsten halt auf die Verhältnisse achten:

wa/wn = ha/hn

wa: alte Breite
wn: neue Breite
ha: alte Höhe
hn: neue Höhe

Wenn du dann die Weite 120 willst und die Höhe entsprechend angepasst: 
wa/120 = ha/hn, dann nach hn auflösen: gibt: hn = 120 *ha/wa

```
int w = 120; 
int h = w*img.getHeight()/img.getWidth(); //img ist das bild
```
So hoffe mal dass ich keinen Fehler drinn hab


----------



## volk (12. Aug 2005)

Ich danke dir


----------



## Ravenlord (2. Sep 2006)

Hallo,

da ich mom vor genau dem selben problem steh post ich einfach mal hier rein, bevor ich was neues aufmach 

Leider gehen die Methoden Image.getHeight() und getWidth() nicht  ich bekomm immer eine Fehlermeldung das ein ImageObserver fehlen würde, aber den hab ich doch garnicht, oder???

```
Image temp = Toolkit.getDefaultToolkit().getImage(Bild);
			int w = 144; 
			int h = w*Bild.getHeight()/Bild.getWidth(test); //img ist das bild
			ImageIcon BeschIcon = new ImageIcon(temp.getScaledInstance(w, h, 1));
```

so jedenfalls gehts net 


kann mir da wohl noch jemand bitte bitte einen tipp geben???

Danke schonmal!

Alex


----------

