Как я могу выполнить декодирование LZW на Java?
Вопрос
У меня есть база данных, содержащая данные изображений, хранящиеся в виде двоичного объекта.В документации сказано, что данные закодированы с использованием LZW.Я думал, что смогу декодировать его, используя входные потоки Zip или GZip, найденные в библиотеке Java, но это не сработало — я получил исключение, в котором говорилось, что формат данных неверен.
Судя по тому, что я прочитал, библиотека использует DEFLATE, а не LZW.Кроме того, я читал о некоторых проблемах с лицензированием использования алгоритма LZW.
Что я могу использовать для декодирования данных?Есть ли библиотека?Должен ли я реализовать это самостоятельно?А как насчет проблем с лицензированием?
Решение
Вот пара ссылок:
И есть другие.
Действительно, если изображения представляют собой файлы TIFF со сжатием LZW, Расширенный API обработки изображений Java видимо поддерживает декодирование напрямую (хотя и не кодирование кажется).
Другие советы
Я знаю, что вопрос старый, но я просто хотел добавить отличный ресурс о LZW:
http://www.matthewflickinger.com/lab/whatsinagif/lzw_image_data.asp
Более конкретно речь идет об использовании LZW в изображениях GIF, но он довольно хорошо объясняет алгоритмы сжатия и распаковки.
Вы также можете попробовать с 7-Zip JBinding который внутри использует библиотеку 7zip.Его довольно легко использовать.
Я перебрал удивительное количество реализаций LZW, прежде чем нашел ту, которая работала в моем случае.
Несжатый входной поток из Проект БиоЯва у меня сработало, когда мне нужно было распаковать файл .pax.