Hallo,
Vorweg: ich arbeite in einem großen Framework und es ist noch Java 6 in Verwendung.
Folgendes Problem plagt mich:
Ich versuche BufferedImages in ein Bytearray zu schreiben.
Haut auch hin, aber die Funktion ImageIO.write() ignoriert bei PNGs einfach vehement die Transparenz-Settings des Bildes.
Bei späteren Widereinlesen der Bilder ist die Transparenz aus dem Bild verschwunden.
Ich habe leider keinen Einfluss auf Imagetype der BufferedImages (RGB, ARGB...) da sie aber interessanterweise vorher Transparenz-Werte besitzen (image.getAlphaRaster() ist nicht null und gibt auch für ausgewähle Pixel korrekte Transparenz-Werte zurück), und erst nach dem Schreiben und Widereinlesen keine Transparenz mehr haben, dürfte es wohl am Schreiben liegen (das Einlesen von Transparenten Bildern wurde mehrfach getestet und funktioniert so weit...).
Ich könnte mir trotzdem vorstellen, dass es vielleicht am falschen Type liegt - kann man den evtl. auch für ein bestehendes BufferedImage verändern? Oder müsste ich den Umweg gehen und ein neues Objekt erstellen?
Bin etwas ratlos mit der Thematik, weil auch intensives googeln keine großen Erkenntnisse brachte (außer das manchmal Leute beim einlesen ähnliche Probleme hatten...).
Hat jemand einen Tipp für mich, wie ich mit dem Problem umgehen kann?
Danke im Voraus!
Relevante Codestellen:
Hier scheint das Problem zu liegen:
Einlesen läuft so ab:
Vorweg: ich arbeite in einem großen Framework und es ist noch Java 6 in Verwendung.
Folgendes Problem plagt mich:
Ich versuche BufferedImages in ein Bytearray zu schreiben.
Haut auch hin, aber die Funktion ImageIO.write() ignoriert bei PNGs einfach vehement die Transparenz-Settings des Bildes.
Bei späteren Widereinlesen der Bilder ist die Transparenz aus dem Bild verschwunden.
Ich habe leider keinen Einfluss auf Imagetype der BufferedImages (RGB, ARGB...) da sie aber interessanterweise vorher Transparenz-Werte besitzen (image.getAlphaRaster() ist nicht null und gibt auch für ausgewähle Pixel korrekte Transparenz-Werte zurück), und erst nach dem Schreiben und Widereinlesen keine Transparenz mehr haben, dürfte es wohl am Schreiben liegen (das Einlesen von Transparenten Bildern wurde mehrfach getestet und funktioniert so weit...).
Ich könnte mir trotzdem vorstellen, dass es vielleicht am falschen Type liegt - kann man den evtl. auch für ein bestehendes BufferedImage verändern? Oder müsste ich den Umweg gehen und ein neues Objekt erstellen?
Bin etwas ratlos mit der Thematik, weil auch intensives googeln keine großen Erkenntnisse brachte (außer das manchmal Leute beim einlesen ähnliche Probleme hatten...).
Hat jemand einen Tipp für mich, wie ich mit dem Problem umgehen kann?
Danke im Voraus!
Relevante Codestellen:
Hier scheint das Problem zu liegen:
Java:
public static byte[] bufferedImageToByteArray(BufferedImage originalImage, String formatName) throws IOException {
ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
ImageIO.write( originalImage, formatName, byteOutputStream);
byteOutputStream.flush();
byte[] imageInByte = byteOutputStream.toByteArray();
byteOutputStream.close();
return imageInByte;
}
Einlesen läuft so ab:
Java:
image = ImageIO.read(iconFile);