- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用标准文案
GIF 文件格式详解
6.2.1 简介
GIF(Graphics Interchange Format) 是 CompuServe公司开发的图像文件存
储格式, 1987 年开发的 GIF 文件格式版本号是 GIF87a,1989 年进行了扩充,扩
充后的版本号定义为 GIF89a。
GIF 图像文件以数据块 (block) 为单位来存储图像的相关信息。一个 GIF 文
件由表示图形 / 图像的数据块、数据子块以及显示图形 / 图像的控制信息块组成,称为 GIF 数据流 (Data Stream) 。数据流中的所有控制信息块和数据块都必须在文件头 (Header) 和文件结束块 (Trailer) 之间。
GIF 文件格式采用了 LZW(Lempel-Ziv Walch) 压缩算法来存储图像数据,定义了允许用户为图像设置背景的透明 (transparency) 属性。此外, GIF 文件格式可在一个文件中存放多幅彩色图形 / 图像。如果在 GIF 文件中存放有多幅图,它们可以像演幻灯片那样显示或者像动画那样演示。
6.2.2. 文件结构
GIF 文件结构的典型结构如图 6-01 所示。为下文说明方便,在构件左边加了编号。
图 6-01 GIF 文件结构
数 据 块 可 分 成 3 类 : 控 制 块 (Control Block)
(Graphic-Rendering Block) 和专用块 (Special Purpose Block)
,图形描绘块
。
控制块:控制块包含有用来控制数据流 (Data Stream) 或者设置硬件参数的信息,其成员包括:
GIF 文件头 (Header)
逻辑屏幕描述块 (Logical Screen Descriptor)
图形控制扩展块 (Graphic Control Extension)
文件结束块 (Trailer)
图形描绘块 :包含有用来描绘在显示设备上显示图形的信息和数据, 其成员包括:
图像描述块 (Image Descriptor)
精彩文档
实用标准文案
无格式文本扩展块 (Plain Text Extension)
全局调色板、局部调色板、图像压缩数据和图像说明扩充块。
特殊用途数据块 ;包含有与图像处理无关的信息,其成员包括:注释扩展块 (Comment Extension)
应用扩展块 (Application Extension)
除了在控制块中的逻辑屏幕描述块 (Logical Screen Descriptor) 和全局彩
色表 (Global Color Table) 的作用范围是整个数据流 (Data Stream) 之外 , 所有其他控制块仅跟在它们后面的图形描绘块。
6.2.3 构件详解
1. GIF 文件头
文件头描述块 (Header) 定义 GIF 数据流 (GIF Data Stream) ,它的结构如图 6-02 所示。文件头描述块 (Header) 由 GIF 标记域 (Signature) 和版本号 (Version) 域组成,是一个由 6 个固定字节组成的数据块, 它们用来说明使用的文件格式是 GIF 格式及当前所用的版本号。 GIF 标记域 (Signature) 存放的是 “GIF”,版本号域存放的是 1987 年 5 月发布的“ 87a”或者 1989 年 7 月发布的“ 89a”,或者更加新的版本号。
图 6-02 标记 / 版本数据块的结构
typedef struct gifheader
{
BYTE bySignature[3];
BYTE byVersion[3];
}GIFHEADER;
逻辑屏幕描述块
逻辑屏幕描述块 (Logical Screen Descriptor) 包含定义图像显示区域的参
数,包括背景颜色信息。 这个数据块中的坐标相对于虚拟屏幕的左上角, 不一定是指显示屏的绝对坐标, 这就意味可以参照窗口软件环境下的窗口坐标或者打印
机坐标来设计图像显示程序。逻辑屏幕描述块的结构如图
6-03 所示:
精彩文档
实用标准文案
图 6-03 屏幕描述块的结构
typedef struct gifscrdesc
{
WORD wWidth;
WORD wDepth;
struct globalflag
{
BYTE PalBits : 3;
BYTE SortFlag : 1;
BYTE ColorRes : 3;
BYTE GlobalPal : 1;
} GlobalFlag;
BYTE byBackground;
BYTE byAspect;
}GIFSCRDESC;
逻辑描述块包含 7 个字节。字节 0 和字节 1 用来说明逻辑显示屏的宽度, 字
节 2 和字节 3 用来说明
文档评论(0)