Bilder speichern (jpg, gif, jpg)

beastofchaos

Bekanntes Mitglied
Hallo Leute,
Verzweifel gerade daran ein Bild (mit hoher Qualität) abzuspeichern. "png" und "gif" funktioneiren sauber mit
Code:
ImageIO.write()
und ich seh keine Qualitätsmangel, aber bei "jpg" erzeugt der eine jpg-Datei mit zwar dem Bild, aber einem rötlichen Ton darüber habe ich das Gefühl. Habe folgendes beides ausprobiert:

Java:
			else if (extension.toLowerCase().equals("jpg"))
			{
				ImageIO.write(
						img,
						"jpeg", // oder "jpg" - geht beides nicht so richtig
						file);
			}


Java:
			else if (extension.toLowerCase().equals("jpg"))
			{
				Iterator<ImageWriter> iterator = ImageIO
						.getImageWritersByFormatName("jpg");
				ImageWriter imageWriter = iterator.next();
				ImageWriteParam imageWriteParam = imageWriter
						.getDefaultWriteParam();
				imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
				imageWriteParam.setCompressionQuality(1);
				ImageOutputStream imageOutputStream = new MemoryCacheImageOutputStream (new FileOutputStream(file));
				imageWriter.setOutput(imageOutputStream);
				IIOImage iioimage = new IIOImage(img, null, null);
				imageWriter.write(null, iioimage, imageWriteParam);
				imageOutputStream.flush();
			}

Wisst ihr eine besser (bzw. verständlichere) und schönere Lösung? 🙂
 
Mir fällt gerade, dass es gut ist, wenn ich ImageIO als Format "png" auch bei jpg angebe. Aber ist das richtig so? Ist die Datei dann nicht eigentlich eine png-Datei, auch wenn der Dateiname was anderes sagt?

Thomas
 

Zurück
Oben