2010-03-11 10 views
6

Ich habe eine Datenbank, die Bilddaten enthält, die als binärer Blob gespeichert sind. Die Dokumentation besagt, dass die Daten mit LZW codiert sind. Ich dachte, dass ich es mit den Zip- oder GZip-Eingabeströmen in der Java-Bibliothek entschlüsseln könnte, aber es hat nicht funktioniert - ich habe eine Ausnahme erhalten, die besagt, dass das Format der Daten nicht korrekt ist.Wie kann ich LZW-Dekodierung in Java machen?

Von dem, was ich gelesen habe, verwendet die Bibliothek DEFLATE, die nicht LZW ist. Außerdem habe ich über einige Lizenzprobleme für die Verwendung des LZW-Algorithmus gelesen.

Was kann ich verwenden, um die Daten zu dekodieren? Gibt es eine Bibliothek? Muss ich es selbst implementieren? Was ist mit den Lizenzproblemen?

+2

Der LZW-Algorithmus selbst wurde patentiert, aber die Patente sind 2003 abgelaufen. –

Antwort

1

Hier sind ein paar Links:

Und es gibt andere.

In der Tat, wenn die Bilder LZW komprimierte TIFF-Dateien sind, unterstützt die Java Advanced Imaging API offenbar Decodierung direkt (obwohl nicht encoding es scheint).

+0

Sie sind keine TIFF-Dateien, sie sind nur die Bild-Raster-Daten, und ich bin nur an der Decodierung interessiert. Danke für die Ressourcen! –

1

Sie können auch versuchen, mit 7-Zip JBinding, die die 7zip-Bibliothek intern verwendet. Es ist ziemlich einfach zu benutzen.

1

Ich ging durch eine überraschende Menge von LZW-Implementierungen, bevor ich eine fand, die für meinen Fall funktionierte.

UncompressedInputStream von der BioJava project arbeitete für mich, als ich eine .pax-Datei entpacken musste.