GZIP Streams und gzip

Status
Nicht offen für weitere Antworten.

DEvent

Bekanntes Mitglied
Hallo,
ich habe ein kleines Problem mit dem GZIPOutputStream. Ich erstelle ein Bild mit einem BufferedImage, danach wollte ich es im PNG Format speichern. Da PNG ja ein Loss-Less-Komprimierung ist, ist das Bild viel zu gros, somit will ich noch als gzip komprimieren.

Der Code ist:
Code:
        FileOutputStream fstream = new FileOutputStream(file);
        GZIPOutputStream zstream = new GZIPOutputStream(fstream);
        ImageIO.write(image, "png", zstream);

        fstream.close();

aber gzip meldet mir den Fehler: gzip: test1-png.gz: unexpected end of file. Gzip kann es zwar entpacken, aber irgendwie ist dann die letzte Pixel-Zeile des Png-Bildes nicht mehr da. Gzip-Version ist die hier:
gzip 1.3.12
Copyright (C) 2007 Free Software Foundation, Inc.
Copyright (C) 1993 Jean-loup Gailly.

Kann es sein dass GZIPOutputStream nicht kompatibel zu gzip 1.3.12 ist?
 
mal probiert zstream zu schließen anstatt fstream?
zstream buffers sicherlich daten, da die ja blockweise komprimiert werden. wenn du am ende einfach fstream.close aufrufst hat zstream keine möglichkeit mehr die letzten gepufferten daten zu schreiben
 
HoaX hat gesagt.:
mal probiert zstream zu schließen anstatt fstream?
zstream buffers sicherlich daten, da die ja blockweise komprimiert werden. wenn du am ende einfach fstream.close aufrufst hat zstream keine möglichkeit mehr die letzten gepufferten daten zu schreiben

Danke, wieder was gelernt. Ich dachte immer es sei egal welchen Stream man schliesst. Aber eigentlich ist es auch logisch was du sagst.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben