Hi,
ich versuche mehrere PNG Dateien in eine Datei zu schreiben und wieder umgekehrt. Das Schreiben scheint prima zu funktionieren, jedoch nicht wenn ich es wieder lesen möchte. Das erste Bild der Datei kann noch gelesen werden, aber dannach garnix mehr. Am besten schaut ihr euch den Code an:
Ich benutz hier einfach ein DataInputStream, weil ich das später erweitern möchte, dass er am Anfang der Datei ein Integer liest/schreibt, wieviele PNGs in der Datei enthalten sind. Aber das ist jetzt unwichtig.
Auf jeden Fall fällt mir folgendes auf:
Größe der (Eingabe)Bilder: img1.png = 92,3KB, img2.png = 138,2KB
Größe der Gesamtdatei (ausgabe): gesamt = 299,8KB
Größe der (Ausgabe)Bilder: fertig1.png = 126,0KB, fertig2.png = 0KB natürlich wegen Fehler
Fehlermeldung:
Da fertig1.png > img1.png vermute ich, dass ImageIO vielleicht zu viel liest?
Naja, kann mir jemand bitte bitte helfen?
ich versuche mehrere PNG Dateien in eine Datei zu schreiben und wieder umgekehrt. Das Schreiben scheint prima zu funktionieren, jedoch nicht wenn ich es wieder lesen möchte. Das erste Bild der Datei kann noch gelesen werden, aber dannach garnix mehr. Am besten schaut ihr euch den Code an:
Code:
{ // SCHREIBEN
DataInputStream dis = new DataInputStream(new FileInputStream("/home/salim/test/img1.png"));
BufferedImage buff1 = ImageIO.read(dis);
dis.close();
dis = new DataInputStream(new FileInputStream("/home/salim/test/img2.png"));
BufferedImage buff2 = ImageIO.read(dis);
dis.close();
DataOutputStream dos = new DataOutputStream(new FileOutputStream("/home/salim/test/gesamt"));
ImageIO.write(buff1, "png", dos);
ImageIO.write(buff2, "png", dos);
dos.close();
}
{ // WIEDER LESEN
DataInputStream dis = new DataInputStream(new FileInputStream("/home/salim/test/gesamt"));
BufferedImage buff1 = ImageIO.read(dis); // buff1 scheint richtig gelesen zu werden
BufferedImage buff2 = ImageIO.read(dis); // buff2 wird hier NULL
dis.close();
DataOutputStream dos = new DataOutputStream(new FileOutputStream("/home/salim/test/fertig1.png"));
ImageIO.write(buff1, "png", dos);
dos.close();
dos = new DataOutputStream(new FileOutputStream("/home/salim/test/fertig2.png"));
ImageIO.write(buff2, "png", dos);
dos.close();
}
Auf jeden Fall fällt mir folgendes auf:
Größe der (Eingabe)Bilder: img1.png = 92,3KB, img2.png = 138,2KB
Größe der Gesamtdatei (ausgabe): gesamt = 299,8KB
Größe der (Ausgabe)Bilder: fertig1.png = 126,0KB, fertig2.png = 0KB natürlich wegen Fehler
Fehlermeldung:
Exception in thread "main" java.lang.IllegalArgumentException: im == null!
at javax.imageio.ImageIO.write(ImageIO.java:1457)
at javax.imageio.ImageIO.write(ImageIO.java:1565)
at Test.main(Test.java:49)
Da fertig1.png > img1.png vermute ich, dass ImageIO vielleicht zu viel liest?
Naja, kann mir jemand bitte bitte helfen?