Hallo zusammen,
Ich möchte ein BufferedImage in eine XML Datei mitspeichern.
Dies funktioniert auch soweit.
Meine Frage ist jetzt. Reduziert das immer wieder abspeichern der Datei die Bildqualität, da ich das ja als JPG konvertiere?
Hier mal mein Code um das Bild umzuwandeln
Wenn ich die untere Variante nutze die ich im Forum hier gefunden habe ist die datei 8x größer. Das speichern als PNG macht es auch nicht besser da bin ich bei 6x größer.
Das Problem ist einfach das ich verhindern will das die Qualität bei jedem speicherverlust abnimmt. Geht das irgendwie? Oder müsste ich dazu nachdem bspw. das Bild geladen wurde einmal das bild kodieren und dann diese kodierung immer zum speichern und laden nutzen.
Ich möchte ein BufferedImage in eine XML Datei mitspeichern.
Dies funktioniert auch soweit.
Meine Frage ist jetzt. Reduziert das immer wieder abspeichern der Datei die Bildqualität, da ich das ja als JPG konvertiere?
Hier mal mein Code um das Bild umzuwandeln
Code:
private static String fromBufferedImageToString(BufferedImage bufferedImage){
return new BASE64Encoder().encode(toByteArray(bufferedImage));
}
private static byte[] toByteArray(BufferedImage bufferedImage){
if(bufferedImage != null){
ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
try {
ImageIO.write(bufferedImage, "jpg", byteArrayOS);
} catch (IOException e) {
e.printStackTrace();
}
byte[] b = byteArrayOS.toByteArray();
return b;
//fast 8x größer
// return ((DataBufferByte) bufferedImage.getData().getDataBuffer()).getData();
}
return new byte[0];
}
Wenn ich die untere Variante nutze die ich im Forum hier gefunden habe ist die datei 8x größer. Das speichern als PNG macht es auch nicht besser da bin ich bei 6x größer.
Das Problem ist einfach das ich verhindern will das die Qualität bei jedem speicherverlust abnimmt. Geht das irgendwie? Oder müsste ich dazu nachdem bspw. das Bild geladen wurde einmal das bild kodieren und dann diese kodierung immer zum speichern und laden nutzen.