Как я могу сделать LZW декодирование на Java?

У меня есть база данных, которая содержит данные изображения, хранящиеся в виде двоичного двоичного объекта. В документации говорится, что данные кодируются с использованием LZW. Я думал, что смогу декодировать его, используя входные потоки Zip или GZip, найденные в библиотеке Java, но это не сработало - я получил исключение, которое говорит о неправильном формате данных.

Из того, что я прочитал, библиотека использует DEFLATE, который не является LZW. Кроме того, я читал о некоторых проблемах лицензирования для использования алгоритма LZW.

Что я могу использовать для декодирования данных? Есть ли библиотека? Должен ли я реализовать это сам? Как насчет проблем с лицензированием?

4 ответа

Решение

Вот несколько ссылок:

И есть другие.

Действительно, если изображения представляют собой сжатые LZW файлы TIFF, Java Advanced Imaging API, очевидно, поддерживает декодирование напрямую (хотя, кажется, не кодирование).

Я знаю, что вопрос старый, но я просто хотел добавить отличный ресурс о LZW:

http://www.matthewflickinger.com/lab/whatsinagif/lzw_image_data.asp

Более конкретно об использовании LZW в изображениях GIF, но он объясняет алгоритмы сжатия и распаковки довольно хорошо.

Вы также можете попробовать 7-Zip JBinding, который использует библиотеку 7zip для внутреннего использования. Это довольно просто в использовании.

Я прошел удивительное количество реализаций LZW, прежде чем нашел подходящую для моего случая.

UncompressedInputStream из проекта BioJava работал для меня, когда мне нужно было распаковать файл.pax.

Другие вопросы по тегам