mehrere PNG in eine Datei

Status
Nicht offen für weitere Antworten.

MadHatter

Aktives Mitglied
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:
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();
        }
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:
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?
 

Campino

Top Contributor
Wie sinnvoll ist es den, die alle in die selbe Datei zu schreiben? Das macht, meiner Meinung nach, keinen Sinn. Pack sie doch über die Klassen aus java.util.zip in ein Archiv (musst es ja nicht als *.zip speichern) oder, noch einfacher, mach mehrere Dateien. Meiner Meinung nach ist das sinnvoller.
 

MadHatter

Aktives Mitglied
Also geht das nicht mit Java??? Mit C++ gings...
Für den Sinn brauchst du dir keine Gedanken zu machen. Wofür ich das brauche, und dass ich es überhaupt brauche, soll meine Sache sein. Tut mir leid, ich weiß, dass das nicht nett rüberkommt, aber es stört mich immer, dass in Foren antworten kommen, wie "wozu brauchst du das überhaupt". Wenn es als ZIP ginge, täte ich es so machen, aber ich brauche es so.

Also, ist jemand da, der dieses komische Problem lösen kann?
 

MadHatter

Aktives Mitglied
Ok, ich hab das Problem gelöst. Für alle anderen, die mal so ein Problem haben sollten, hier die Lösung:
Zuerst ein ByteArrayOutputStream (baos) erzeugen, und darin über ImageIO das Bild schreiben. Dann lese ich durch das baos wieviele Bytes Platz das Bild nimmt, und schreibe es in die Datei. Dannach schreibe ich die bytes des baos.toByteArray() in die Datei.
Später beim Lesen lese ich wieviele Bytes das Bild groß ist, dann erstelle ich ein so großes byte Array und lese jedes einzelne byte aus der Datei bis es gefüllt ist. Dann erstelle ich ein ByteArrayInputStream mit den Bytes und mache dann ImageIO.read(das_bytearrayinputstream).
Vielleicht gibt es eine bessere Lösung, aber die habe ich bisher noch nicht gefunden...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Mehrere Klassen auf JFrame Spiele- und Multimedia-Programmierung 3
N Mehrere Rechtecke in großes Quadrat einzeichnen Spiele- und Multimedia-Programmierung 5
J mehrere Listener für einen Button / Label Spiele- und Multimedia-Programmierung 1
M Applets - mehrere Tasten gleichzeitig abfragen Spiele- und Multimedia-Programmierung 3
E [LWJGL] Karusell, mehrere Objekte drehen sich um einen Mittelpunkt Spiele- und Multimedia-Programmierung 31
staxx6 (Slick) Steuerung - mehrere Belegungen Spiele- und Multimedia-Programmierung 12
B GameGrid Probleme mit mehrere Actors Spiele- und Multimedia-Programmierung 5
R Mehrere Shader in einem Program Spiele- und Multimedia-Programmierung 8
B GameGrid Probleme mit mehrere Actors Spiele- und Multimedia-Programmierung 2
S Ein Thread für alle Animationen oder mehrere? Spiele- und Multimedia-Programmierung 2
S Mehrere Steine gleichzeitig setzen und bewegen Spiele- und Multimedia-Programmierung 4
V Java3D: mehrere ViewingPlaforms in Sonnensystem Spiele- und Multimedia-Programmierung 8
A Mehrere geometrische Objekte in JPanel zeichnen Spiele- und Multimedia-Programmierung 4
hdi mehrere Threads/Tasks in einem synchronisieren -> TaskPoo Spiele- und Multimedia-Programmierung 36
S Java3D - mehrere Instanzen eines Geometrieobjektes erzeugen Spiele- und Multimedia-Programmierung 3
V Ein oder mehrere GIF-Grafiken zusammenfügen Spiele- und Multimedia-Programmierung 3
L Wie kann ich mehrere Texturen auf ein Object File mappen Spiele- und Multimedia-Programmierung 4
D mehrere Graphiken erstellen und ihre Position definieren Spiele- und Multimedia-Programmierung 4
H Mausbewegungen wie eine echte Maus in 3 dimensionalen Spielen Spiele- und Multimedia-Programmierung 12
temi OpenGL: Eine Kugel Spiele- und Multimedia-Programmierung 7
Taknax Versuche eine Mod von 1.11.2 in 1.12.2 zu porten. Spiele- und Multimedia-Programmierung 1
J noch eine Runde spielen? Spiele- und Multimedia-Programmierung 6
K Wie bekomme ich eine Transition für alle Objekte zum stoppen? Spiele- und Multimedia-Programmierung 1
P Wie kann ich einem Programm hinter eine GUI verstecken? Spiele- und Multimedia-Programmierung 12
J Wie kann man eine grafische Oberfläche erzeugen um eine Textdatei auswählen zu können ?? Spiele- und Multimedia-Programmierung 1
D Iterieren durch einen Ordner mit Audiodateien und verketten eine andere Audiodatei Spiele- und Multimedia-Programmierung 17
C Eine eigene 3d Engine : Shader - aber wie ? Spiele- und Multimedia-Programmierung 2
MABY Eine mp3 Datei in Java abspielen Spiele- und Multimedia-Programmierung 14
B Mit Swing eine Grafische Oberfläche erstellen Spiele- und Multimedia-Programmierung 1
X Minecraft Wie kann ich eine Karte erstellen wie zb:(Bei Minecraft) Spiele- und Multimedia-Programmierung 1
M Wie kann man die Auflösung eine fertigen Programms ändern? Spiele- und Multimedia-Programmierung 1
Furtano Vektoren für Bewegung für eine 2D-Simulation Spiele- und Multimedia-Programmierung 3
TheSorm Collision an einer bestimmten Seite eine Rectangles abfragen Spiele- und Multimedia-Programmierung 3
T Sinusgenerator für eine Hp Spiele- und Multimedia-Programmierung 8
S eine nullpointerexception, wo sie nicht sein sollte Spiele- und Multimedia-Programmierung 12
N Webanwendung als eine Art Spiel Spiele- und Multimedia-Programmierung 8
M Eine Art "Vier Gewinnt" Spiele- und Multimedia-Programmierung 5
B j3d Rotation um mehr als eine Achse Spiele- und Multimedia-Programmierung 9
M Methoden eine Map zu zeichnen Spiele- und Multimedia-Programmierung 5
2 Eine Java App als Midi Device? Spiele- und Multimedia-Programmierung 2
W 3D-APIs für Java - Eine Übersicht Spiele- und Multimedia-Programmierung 8
M Wavefront Object Loader zeigt nur eine Textur an. Spiele- und Multimedia-Programmierung 7
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
R JLayer player spielt nur eine mp3 Datei ab Spiele- und Multimedia-Programmierung 1
M Variable die eine Klasse enthält ändern Problem Spiele- und Multimedia-Programmierung 16
G Was genau ist eine Grafikengine? Spiele- und Multimedia-Programmierung 14
radiac Mal eine ganz Doofe Frage... verzeiht :) Spiele- und Multimedia-Programmierung 9
Developer_X Eine Frage zur ViewBesetzung Spiele- und Multimedia-Programmierung 28
G Eine Art Polygon Spiele- und Multimedia-Programmierung 5
H Wie erzeuge ich eine Zufallszahl zwischen 0 und 8 ? Spiele- und Multimedia-Programmierung 7
B vertikal schreiben oder eine Bilddatei drehen? Spiele- und Multimedia-Programmierung 11
E nur eine Konzeptfrage Spiele- und Multimedia-Programmierung 11
G Ein begrenzter Zeitraum, um eine Eingabe zu tätigen! Spiele- und Multimedia-Programmierung 9
H Eine gestrichelte Linie Spiele- und Multimedia-Programmierung 3
V Wie bewege ich eine eingefügte Grafik (img) ? Spiele- und Multimedia-Programmierung 2
D Eigentlich eine Umfrage (Pausenanimation) Spiele- und Multimedia-Programmierung 4
M "Java Datei" Cannot be resolved to a variable Spiele- und Multimedia-Programmierung 2
H Musik Datei lädt nicht? Spiele- und Multimedia-Programmierung 8
K Das Leerzeichen der Tastatur wird nicht gleichgesetzt mit dem Leerzeichen aus der Text Datei Spiele- und Multimedia-Programmierung 5
P .Wav Datei vor main-Methode abspielen? Spiele- und Multimedia-Programmierung 9
F SO-Datei compilieren... Spiele- und Multimedia-Programmierung 1
G Audio-Datei analysieren Spiele- und Multimedia-Programmierung 3
J Programm kann Audio Datei nicht finden Spiele- und Multimedia-Programmierung 7
L Wiedergabe von wav-Datei aus jar fehlerhaft Spiele- und Multimedia-Programmierung 2
Polarfuchs Status von Midi Datei(wird gerade abgespielt oder nicht) Spiele- und Multimedia-Programmierung 0
T Minecraft Bukkit Plugin Text Datei auslesen Spiele- und Multimedia-Programmierung 1
E .jar-Datei tut nichts Spiele- und Multimedia-Programmierung 5
C Highscoreliste mit SharedPreferences oder XML-Datei? Spiele- und Multimedia-Programmierung 1
D Probleme mit der Runnable jar Datei Spiele- und Multimedia-Programmierung 3
I Minecraft NBT Minecraft *.dat-Datei - Verständnisproblem Spiele- und Multimedia-Programmierung 26
H wma Datei abspielen: java.io.IOException: Resetting to invalid mark Spiele- und Multimedia-Programmierung 11
L Werte aus einer .yml Datei lesen Spiele- und Multimedia-Programmierung 9
J Audio Input mit Datei abgleichen Spiele- und Multimedia-Programmierung 11
M Internet Java Spiel (.jar Datei) auf dem PC ausführen Spiele- und Multimedia-Programmierung 7
R Savegame als Datei, welche API-Klasse benutzen Spiele- und Multimedia-Programmierung 8
A Audio-Datei auf Mikrofonausgang senden? Spiele- und Multimedia-Programmierung 2
S MP3 Datei informationen bearbeiten Spiele- und Multimedia-Programmierung 9
Guybrush Threepwood Overhead: Ressourcen in Jar-Datei Spiele- und Multimedia-Programmierung 4
P .obj-Datei in Java3D laden: ParsingErrorException Spiele- und Multimedia-Programmierung 7
W Bitmap aus Datei erstellen Spiele- und Multimedia-Programmierung 5
A wav datei aus jar Abspielen Spiele- und Multimedia-Programmierung 7
M Das Frequenzspektrum einer WAV/MP3-Datei anzeigen Spiele- und Multimedia-Programmierung 6
N bei abspielen der wav datei fehler Spiele- und Multimedia-Programmierung 6
S benutzerdefiniertes Tileset in Datei speichern Spiele- und Multimedia-Programmierung 3
J Zeichnen in BufferedImage und dieses in Datei speichern Spiele- und Multimedia-Programmierung 2
R Wave-Datei mit JLayer abspielen Spiele- und Multimedia-Programmierung 4
M Directx Datei laden Spiele- und Multimedia-Programmierung 3
M Probleme mit WaveFront-Object - Datei Spiele- und Multimedia-Programmierung 7
G Einen gif oder jpg Datei aus einem Graphics Objekt o. JFrame Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben