Starke Qualitätsunterschied JPG/PNG

Status
Nicht offen für weitere Antworten.

Piwi

Mitglied
Guten Tag Gemeinde,

wenn ich ein Bild einmal im PNG-Format speichere und einmal im JPG speichere (Java Standard Biblitotheken, Standard Code (s.u.)), bekomme ich folgendes Ergebnis:

PNG:
ai3.png


JPG:
ai3.jpg


Folgender Code wurde verwendet:
Java:
				File bildpfad = new File("build/pics/awarenessimage/ai" + count + ".jpg");
				File bildpfad2 = new File("build/pics/awarenessimage/ai" + count + ".png");
				ImageIO.write(ai, "jpg", bildpfad);
				ImageIO.write(ai, "png", bildpfad2);

Ich möchte gerne, dass mein JPG-Bild so aussieht, wie mein PNG-Bild. Ich weiß, dass JPG ein verlustbehaftetes Kompressionsverfahren ist und es daher vond er Qualität wohl soviel schlechter ausschaut. Aber es gibt doch bestimmt Bilbiotheken, die mir mein Bild im JPG-Format nicht so versauen, denn ich brauche zur Weiterverwendung unbedingt ein Bild im JPG-Format.

Vielen Dank im Voraus

Piwi
 

Piwi

Mitglied
ai ist einfach nur der erste Teil des Dateinamens. Es werden fortlaufend Bilder gespeichert, die dann

ai1.jpg
ai2.jpg

usw heißen sollen.

Das übergebene ai ist eine von mir erstellte Klasse AwarenessImage, die von BufferedImage erbt. Ihr Konstruktor sieht so aus:

Java:
	public AwarenessImage() {
		super(800, 600, BufferedImage.TYPE_INT_ARGB);
		init();
		createBild();
	}
 
Zuletzt bearbeitet:

The_S

Top Contributor
Das übergebene ai ist eine von mir erstellte Klasse AwarenessImage, die von BufferedImage erbt. Ihr Konstruktor sieht so aus:

Java:
	public AwarenessImage() {
		super(800, 600, BufferedImage.TYPE_INT_ARGB);
		init();
		createBild();
	}

Da ist vermutlich auch schon das Problem. Dein BufferedImage ist ARGB, hat also einen Alpha-Kanal. Der kann in einem PNG dargestellt werden, nicht aber in einem JPG.
 

Piwi

Mitglied
Habs mal auf

Java:
super(800, 600, BufferedImage.TYPE_INT_RGB);

umgestellt. Und schon habe ich ein viel vernünftigeres Ergebnis. Danke für den Tipp, da hab ich im wahrsten Sinne des Wortes den Wald vor lauter Bäumen nicht mehr gesehen. :)

Gibt es vielleicht noch ne Möglichkeit, das verschwommene rund um die eingefügten Bilder bei JPG wegzubekommen? Jetzt sieht es nämlich so aus:

ai5.jpg
 

The_S

Top Contributor
Das ist dann wohl die Komprimierungsrate von JPG. KA ob man die bei ImageIO irgendwie setzen kann. Ansonsten müsstest du wohl auf eine andere Klasse zurückgreifen, die diese verändern kann.

Aber wenn du verlustfrei schreiben möchtest, warum dann überhaupt jpg und nicht png?
 
T

tuxedo

Gast
Wieso bist du so scharf auf JPG und wieso magst du kein PNG?

Das "verschwommene" in deinem JPG Bild ist typisch für JPEG und ist AFAIK nur mit weniger kompression (=mehr Daten == größere Datei) möglich. Ob du's mit JPG ganz wegbekommst weiß ich nicht. JPG ist eben ein verlustbehaftetes Bildformat, wohin gegen PNG verlustfrei ist, aber dafür ein wenig größer ...
PNG wäre in dem Fall also eine bessere Wahl.

- Alex

[edit]

okay, JPEG geht auch verlustfrei, ist aber eher untypisch für JPG ... Obs mit Java ohne extra Lib verlustfrei geht weiß ich nicht.
 

byte

Top Contributor
Kann mich den anderen nur anschließen. Wegen dem gleichfarbigem Hintergrund ist hier PNG die erste Wahl. JPEG ist nur bei Fotos sinnvoll, also Bilder ohne gleichfarbige Flächen.
 
Status
Nicht offen für weitere Antworten.

Oben