6. 表基图像数据
GIF图像采用了LZW算法对实际的图像数据进行压缩。为了提高压缩编码的效率,对LZW编码器输出的代码采用可变长度码VLC(variable-length-code),不是用位数高度的代码来表示输出,而且代表码字的位数是可变的。
表基图像数据(Table Based Image Data)由LZW最小代码长度(LZW Minimum Code Size)和图像数据(Image Data)组成,如下图所示。LZW最小代码长度域的值用来确定图像数据中LZW代码使用的初始位数。图像数据(Image Data)由数据子块(Data Sub-blocks)序列组成。
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
域的名称 |
类型 | |||
|
LZW Minimum Code Size |
|
LZW最小代码长度
|
Byte | ||||||||||
|
Image Data
|
|
图像数据 |
Data |
图像数据的存储格式
数据子块(Data Sub-blocks)的结构如图所示,这是一个可变长度的数据块,其长度由块大小域(Block Size)域中的值确定,字节数在0~255之间。
|
7 6 5 4 3 2 1 0 |
字节号 |
域的名称 |
数据类型 |
|
Block Size |
0 |
块大小 |
Byte |
|
|
1 |
|
Byte |
|
|
|
|
Byte |
|
Data Values |
|
数值 |
Byte |
|
|
|
|
Byte |
|
|
… |
|
… |
|
|
… |
|
… |
|
|
|
|
Byte |
|
|
多 |
|
Byte |
|
|
到 |
|
Byte |
|
|
255 |
|
Byte |
数据子块的结构
7. 图形控制扩展块
图形控制扩展块(Graphic Control Extension)包含处理图形描绘块时要使用的参数,它的结构如图所示。现说明如下:
(1) 扩展导入符Extension Introducer)用于识别扩展块的开始,域中的值是一个数值等于0x21的固定值。
(2) 图形控制标签(Graphic Control Label)用于标识当前块是一个图形控制扩展块,域中的值是一个数值等于0xF9的固定值。
(3) 块大小(Block Size)用来说明该扩展块所包含字节数,该字节数是从这个块大小(Block Size)域之后到块结束符之间的字节数。
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
字节号 |
域的名称 |
类型 | ||||
|
Extension Introducer |
0 |
扩展导入符 |
Byte | |||||||||||
|
Graphic Control Label |
1 |
图形扩展标签 |
Byte | |||||||||||
|
|
|
|
| |||||||||||
|
Block Size |
0 |
块大小 |
Byte | |||||||||||
|
<Packed Fields> |
1 |
包装域 |
See below | |||||||||||
|
Delay Time |
2 |
延时时间 |
Unsigned | |||||||||||
|
|
|
|
| |||||||||||
|
Transparent Color Index |
3 |
透明彩色索引 |
Byte | |||||||||||
|
|
|
|
| |||||||||||
|
Block Terminator |
0 |
块结束符 |
Byte | |||||||||||
图像描述块的结构
(4) 包装域的结构如图所示。处理方法(Disposal Method)规定图形显示之后译码器要用表6-03中所述方法进行处理。
包装域规定的处理方法
|
域值 |
处理方法 |
|
0 |
没有指定要做任何处理 |
|
1 |
不处理,图形留在原处 |
|
2 |
显示图形的区域必须要恢复成背景颜色 |
|
3 |
恢复成以前显示的图形 |
|
4~7 |
(未定义) |
用户输入标志(User Input Flag)域表示在继续处理之前是否需要用户输入响应。在延时时间(Delay Time)和用户输入标志(User Input Flag)都设置为1的情况下,继续处理的开始时间取决于用户响应输入在前还是延时时间结束在前。
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
Reserved(保留) |
Disposal Method(处理方法) |
User Input Flag |
Transparent Color Flag | ||||
图形控制扩展块的包装结构
(5) 透明(Transparency Flag)表示是否给出透明索引(transparency index)
(6) 延时时间(Delay Time)用来指定在图形显示之后继续处理数据流之前的等待时间,一百分之一秒为单位。
(7) 当且仅当透明标志位设置为1时,透明索引(Transparency Index)用来指示处理程序是否要修改显示设备上的相应象点。当且仅当透明标志位设置为1时,就要修改。
(8) 块结束符(Block Terminator)表示该图形控制扩展块(Graphic Control Extension)结束,它是由一个字节组成的数据块,该域的值是一个固定的值:0x00,因此称为零长度数据子块(zero-length Data Sub-block)。
8. 无格式文本扩展块
无格式文本扩展块(Plain Text Extension)包含文本数据和描绘文本所须的参数。文本数据用7位的ASCII字符编码并以图形形式显示。扩展块的结构如图所示
|
7 6 5 4 3 2 1 0 |
字节号 |
域的名称 |
数据类型 |
|
Extension Introducer (0x21) |
0 |
扩展导入符 |
Byte |
|
Plain Text Label (0x01) |
1 |
无格式文本标签 |
Byte |
|
Block Size |
0 |
块大小 |
Byte |
|
Text Grid Left Position |
1 |
文本网格左列位置 |
Unsigned |
|
|
2 |
|
|
|
Text Grid Top Position |
3 |
文本网格顶行位置 |
Unsigned |
|
|
4 |
|
|
|
Text Grid Width |
5 |
文本网格宽度 |
Unsigned |
|
|
6 |
|
|
|
Text Grid Height |
7 |
文本网格高度 |
Unsigned |
|
|
8 |
|
|
|
Character Cell Width |
9 |
字符单元宽度 |
Byte |
|
Character Cell Height |
10 |
字符单元高度 |
Byte |
|
Text Foreground Color Index |
11 |
文本颜色索引 |
Byte |
|
Text Background Color Index |
12 |
文本背景颜色索引 |
Byte |
|
|
|
|
|
|
Plain Text Data |
|
无格式文本数据 |
Data Sub-blocks |
|
|
|
|
|
无格式文本扩展块结构

本文详细介绍了GIF图像格式中的LZW压缩算法和图像数据结构,包括表基图像数据的LZW最小代码长度、图像数据的数据子块结构,以及图形控制扩展块的功能,如图形处理方法、延时时间、透明度控制等关键要素。
3993

被折叠的 条评论
为什么被折叠?



