【问题标题】:GIF LZW decompression hints?GIF LZW解压缩提示?
【发布时间】:2012-10-24 07:37:23
【问题描述】:

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

据我了解,当我获取 LZW 压缩数据的 GIF 字节流时,流告诉我:

最小代码大小,也就是第一个字节开始的位数。

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

假设我有 3 个颜色代码(01、10、11),假设 EOI 代码(如 00)将遵循最小代码大小(2)的字节是 2 位,还是 3 位因式在清晰的代码中?还是明文代码/EOI 代码都已计入最小尺寸?

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

【问题讨论】:

  • 有人可以对此提供任何提示吗?

标签: c gif lzw


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 2012-10-06
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多