如何在 Java 中进行 LZW 解码?
我有一个数据库,其中包含存储为二进制 blob 的图片数据。文档说数据是使用 LZW 编码的。我以为我可以使用 Java 库中找到的 Zip 或 GZip 输入流对其进行解码,但它不起作用 - 我收到一个异常,表示数据格式不正确。
据我所知,该库使用 DEFLATE,而不是 LZW。另外,我还阅读了有关使用 LZW 算法的一些许可问题的信息。
我可以用什么来解码数据?有图书馆吗?我必须自己实施吗?许可问题怎么办?
I have a database which contains picture data stored as a binary blob. The documentation says the data is encoded using LZW. I thought that I could decode it using the Zip or GZip input streams found in the Java library, but it didn't work - I got an exception that said the format of the data is not correct.
From what I've read, the library uses DEFLATE, which is not LZW. Also, I've read about some licensing problems for using the LZW algorithm.
What can I use to decode the data? Is there a library? Do I have to implement it myself? What about the licensing problems?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我知道这个问题已经很老了,但我只是想添加一个关于 LZW 的重要资源:
http: //www.matthewflickinger.com/lab/whatsinagif/lzw_image_data.asp
它更具体地介绍了 GIF 图像中 LZW 的使用,但它很好地解释了压缩和解压缩算法。
I know the question is old, but I just wanted to add a great resource about LZW:
http://www.matthewflickinger.com/lab/whatsinagif/lzw_image_data.asp
It's more specifically about the use of LZW in GIF images, but it explains the compression and decompression algorithms pretty well.
这里有几个链接:
http:// www.cs.sfu.ca/CC/365/li/squeeze/LZW.html
http://u.cs.biu.ac.il/~freskom1/AlgProg1/Progs /LZW.java
http://www.codeproject.com/KB/java/lzw.aspx
还有其他的。
事实上,如果图像是 LZW 压缩的 TIFF 文件,Java 高级图像 API 显然支持直接解码(尽管不编码)似乎)。
Here are a couple of links:
http://www.cs.sfu.ca/CC/365/li/squeeze/LZW.html
http://u.cs.biu.ac.il/~freskom1/AlgProg1/Progs/LZW.java
http://www.codeproject.com/KB/java/lzw.aspx
And there are others.
Indeed if the images are LZW compressed TIFF files, The Java Advanced Imaging API apparently supports decoding directly (though not encoding it seems).
您还可以尝试使用 7-Zip JBinding,它在内部使用 7zip 库。它非常容易使用。
You can also try with 7-Zip JBinding which uses the 7zip library internally. It's quite easy to use.
在找到适合我的案例之前,我经历了数量惊人的 LZW 实现。
UncompressedInputStream 来自 BioJava 项目 为我工作。
I went through a surprising amount of LZW implementations before finding one that worked for my case.
UncompressedInputStream from the BioJava project worked for me, when I needed to unpack a .pax file.