GIF LZW减压提示?

时间:2012-11-04 02:59:22

标签: c gif lzw

我已阅读了很多关于GIF LZW解压缩的文章,但我仍然对它的工作原理或如何解决编码方面更加繁琐的编码感到困惑。

据我了解,当我在GIF中找到LZW压缩数据的字节流时,流告诉我:

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

现在,据我了解,我必须为此添加一个用于清除代码,或者为清除代码和EOI代码添加两个。但我很困惑这是哪一个?

所以说我有3个颜色代码(01,10,11),假定EOI代码(为00)将跟随最小代码大小(2)的字节为2位,或者它将是3位因子分解在明确的代码?或者清晰的代码/ EOI代码是否已经考虑到最小尺寸?

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

1 个答案:

答案 0 :(得分:0)

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

IIRC的最小代码大小为8位,这将为您提供256(基数10)的明确代码和257的结束输入。第一个存储的代码是258。

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