GIF 数据存储规范问题

Posted

技术标签:

【中文标题】GIF 数据存储规范问题【英文标题】:GIF Data Storage specification question 【发布时间】:2011-11-09 04:02:50 【问题描述】:

在 GIF 规范中,这里:

http://www.w3.org/Graphics/GIF/spec-gif89a.txt

我无法理解其中的两个部分:

它为“LZW 最小代码大小”指定:

该字节决定了图像数据中 LZW 码使用的初始位数,如附录 F 中所述。

    “用于 LZW 码的初始位数”是什么意思? LZW 代码在 GIF 环境中如何工作? (我知道它指的是 Lempel-Ziv-Welch)。 它所指的难以捉摸的“appexdix F”在哪里? (它不在体内)。

它还规定在“LZW最小码大小”的单字节之后,有一个称为“图像数据”的块,其实际大小未指定,仅称为“数据子块”。

“数据子块”是什么意思? 如何计算数据子块的大小? 这是否与 LZW 代码有关?如果是这样,我应该如何解释?

抱歉所有问题。感谢您的宝贵时间。

作为旁注:即使是部分答案或任何问题的答案,也将不胜感激。

【问题讨论】:

【参考方案1】:

    GIF 应用 LZW 算法,代码大小可变(增加)为 在Wikipedia LZW 中描述。 “初始位数”是初始 代码的大小。

    这在您参考的文档中有描述。颜色代码列表 像素是 LZW 压缩的(“a”段就在您引用的部分上方)。

    它在文件中(在第 30 页 ;-) 接近结尾处,只需搜索 “可变长度代码 LZW 压缩”)

    “数据子块”是 255 个(或更少字节)块中的实际图像数据。 也许是

图像数据和扩展块使用的链表由一系列子块组成,每个子块以一个字节开始,给出子块中后续数据字节的数量(1到255),系列由空子块(0字节)终止。 [Wikipedia GIF]

    “如何计算数据子块的大小?”往上看。它是第一个字节 每个块。

    见上文。

【讨论】:

以上是关于GIF 数据存储规范问题的主要内容,如果未能解决你的问题,请参考以下文章

触发器与非规范化存储过程的优缺点

霍夫曼规范算法。存储代码表

存储过程实现规范

MySQL数据库设计规范

使用连接表存储库的@manytomany 中的 Spring 数据 jpa 规范和可分页

MaxCompute 表(Table)设计规范