2012-11-04 50 views
1

我已经阅读了大量关于GIF LZW解压缩的文章,但我仍然对它是如何工作的或者在编码方面如何解决编码更多的烦杂问题感到困惑。GIF LZW解压提示?

据我了解,当我到达的GIF的LZW压缩数据的字节流,流告诉我:

最小的代码大小,位AKA号的第一个字节开始与。

现在,据我所知,我必须为此清除代码添加一个,或者为清除代码和EOI代码添加两个。但我很困惑这是哪一个?假设我有3个颜色代码(01,10,11),假设EOI代码(如00),跟随最小代码大小(2)的字节是2位,还是3位考虑明确的代码?或者是明确的代码/ EOI代码都已经考虑到最小尺寸?

第二个问题是,从文件中读取动态大小位的最简单方法是什么?因为从偶数编号的字节(8)中读取奇数位(3位,12位等)听起来像是可能是混乱和错误的?

+0

有人可以给这个提示吗? – user1433767

回答

0

从第二个问题开始:是的,您必须从8位字节流中读取动态大小的位。您必须跟踪您正在阅读的大小以及之前读取操作(用于正确放置文件中'下一个字节')的未使用位的数量。

IIRC有8个比特的最小码量,这将使您的256(底为10)和端部257.第一存储的代码输入的清晰代码然后被258.

我不知道为什么你没有查找其中一个公共领域图形库的来源。我知道我没有,因为在1989年(!)没有使用图书馆,没有完整的描述。我必须从示例可执行文件(用于Compuserve的MS-DOS)实现一个解码器,该解码器可以显示图像和一些GIF文件,所以我知道这可以完成(但它不是花费时间的最有效方式)。