Как я могу сделать 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.