GDI+中GIF图片的显示
2010-07-25 20:47:04 来源:WEB开发网核心提示:某位网友曾经问过我GDI+中Gif图像显示的问题,一直没时间给你写,GDI+中GIF图片的显示,在此致歉,我把这篇文章送给他,不包括这个这个字节(不计算块大小自身) 1 Data Values - 块数据,8-bit的
某位网友曾经问过我GDI+中Gif图像显示的问题,一直没时间给你写,在此致歉。我把这篇文章送给他。
一、GIF格式介绍
1.概述
GIF(Graphics Interchange Format,图形交换格式)文件是由 CompuServe公司开发的图形文件格式,版权所有,任何商业目的使用均须 CompuServe公司授权。
GIF图象是基于颜色列表的(存储的数据是该点的颜色对应于颜色列表的索引值),最多只支持8位(256色)。GIF文件内部分成许多存储块, 用来存储多幅图象或者是决定图象表现行为的控制块, 用以实现动画和交互式应用。GIF文件还通过LZW压缩算法压缩图象数据来减少图象尺寸。
2.GIF文件存储结构
GIF文件内部是按块划分的,包括控制块( Control Block )和数据块(Data Sub-blocks)两种。控制块是控制数据块行为的,根据不同的控制块包含一些不同的控制参数; 数据块只包含一些8-bit的字符流,由它前面的控制块来决定它的功能,每个数据块大小从0到255个字节, 数据块的第一个字节指出这个数据块大小(字节数), 计算数据块的大小时不包括这个字节,所以一个空的数据块有一个字节,那就是数据块的大小0x00。 下表是一个数据块的结构:
BYTE | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | BIT |
0 |
块大小 |
Block Size - 块大小,不包括这个这个字节(不计算块大小自身) | |||||||
1 | Data Values - 块数据,8-bit的字符串 | ||||||||
2 | |||||||||
... | |||||||||
254 | |||||||||
255 |
一个GIF文件的结构可分为文件头(File Header)、GIF数据流(GIF Data Stream)和文件终结器(Trailer)三个部分。文件头包含GIF文件署名(Signature)和版本号(Version);GIF数据流由控制标识符、图象块(Image Block)和其他的一些扩展块组成;文件终结器只有一个值为0x3B的字符('';'')表示文件结束。下表显示了一个GIF文件的组成结构:
GIF署名 | 文件头 | |||
版本号 | ||||
逻辑屏幕标识符 | GIF数据流 | |||
全局颜色列表 | ||||
... | ||||
图象标识符 | 图象块 | |||
图象局部颜色列表图 | ||||
基于颜色列表的图象数据 | ||||
... | ||||
GIF结尾 | 文件结尾 |