gif图像格式介绍.doc_第1页
gif图像格式介绍.doc_第2页
gif图像格式介绍.doc_第3页
gif图像格式介绍.doc_第4页
gif图像格式介绍.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

gif图片格式解析/2008424132037.html简介:GIF(Graphics Interchange Format)是CompuServe公司开发的图像文件存储格式,1987年开发的GIF文件格式版本号是GIF87a,1989年进行了扩充,扩充后的版本号定义为GIF89a。GFI图像文件以数据块(block)为单位来存储图像的相关信息。一个GIF文件由表示图形/图像的数据块、数据子块以及显示图形/图像的控制信息块组成,称为GIF数据流(Data Stream)。数据流中的所有控制信息块和数据块都必须在文件头(Header)和文件结束块(Trailer)之间。GIF文件格式采用了LZW(Lempel-Ziv Walch)压缩算法来存储图像数据,定义了允许用户为图像设置背景的透明(transparency)属性。此外,GIF文件格式可在一个文件中存放多幅彩色图形/图像。如果在GIF文件中存放有多幅图,它们可以像演幻灯片那样显示或者像动画那样演示。GIF 语法.语法是用来表达序列的一种符号形式,并用这个表达序列中的一些对象来形成更大的对象。语法也用于表达在给定的位置出现对象的数目。在此给出的语法用来说明形成gif数据流的块序列,用一些规则列表来表达。下面列出用于gif语法的符号定义。图例: 语法词:= 符号定义* 0个或更多的事件发生+ 1个或更多的事件发生| 替代元素 可选元素gif语法的符号定义: := 头部 * 尾记录这个规则将实体定义如下。它必须以头部开始,头部后面接一个逻辑视屏实体,该实体药用其他规则来定义。最后,数据实体接结束符。数据实体后面的*表示数据实体可以在此位置出现0或多次。语法: := 头部 * 尾记录 := 逻辑视屏描述块 全局色表 := | := 图象控制扩充 := |纯文本扩充 := 图象描述符 局部色表 图象数据 := 应用扩充 |注释扩充gif数据流中的数据块可以分为三组:控制块、成象块和特殊用途块。控制块,如:头部、逻辑视屏描述块、图像控制扩充和尾记录,包含用于控制处理数据流或设置硬件参数的信息。成像块,如:图像描述符和纯文本扩充,包含用于在显示设备上成像的信息和数据。特殊用途块,如:注释扩充和应用扩充,包含那些既不用于处理数据流也不用于在显示设备上成象的信息。除了逻辑视屏描述块和全局色表之外,特殊用途块的作用域是整个数据流,而其他控制块的作用域是有限的,仅限于对他们后面的成象块起作用。特殊用途块不对任何控制块构成限制,它对于解码过程来说是透明的。成象块及扩充用于控制块及扩充的作用域限定。块的标记分为三段:除尾记录0x3b之外,0x000x7f用于成象块;0x800xf9用于控制块;0xfa0xff用于特殊用途块。解码器通过识别块标记来处理块的作用域。解释:色表- gif格式利用色表来显示基于光栅的图像。色表分为全局色表和局部色表。全局色表对于那些没有设置局部色表的图像起作用。全局色表的作用域是整个数据流。局部色表对于紧接在其后的单张图像起作用。这两种色表都是可选的。/*全局色表这东西是我们感兴趣的东西,它有点像png格式定义种的调色板,如果要修改gif图片的颜色,哈哈,修改这个全局色表就可以.如果有全局色表块,那么它一定从gif流的14个字节开始(头部6个 + 逻辑视频描述块7个)。*/以下是各数据块的说明,如果注明为版本89a的话,则说明这个数据块不会在87a版的协议中出现.头部(6个字节) 标识符(3 字节) -GIF 版本(3 字节) -87a (or 89a)逻辑视屏描述块 逻辑屏幕宽(2字节) 逻辑屏幕高(2字节) Packed Fields (1字节) 背景色索引(1字节) 象素高宽比(1字节)Packed Fields说明:全局色表标志 1 Bit颜色方案 3 Bits短标志 1 Bit全局色表尺寸 3 Bits解释: 背景颜色索引 - 为背景颜色指向全局色表。背景颜色是指那些没有背图像覆盖的视屏部分的颜色。若全局色表标志位置为0,则该字段也被值0,并且被忽略。象素高宽比 - 用于计算原图像中像素的近似高宽比。如果该字段的值为非0,则象素的高宽比由下面的公式计算:高宽比 = (象素高宽比 + 15) / 64该字段的取值范围从最宽的比值4:1到最高的比值1:4,递增的步幅为1/64。取值: 0 - 没有比值,1255 - 用于计算的值。全局色表标志 - 指示有没有全局色表,如果该标志位置1,则全局色表会紧接在该块之后出现。该位也用于解释是否选用背景颜色索引字段。若该位置1,则背景颜色索引字段的值将指向背景颜色表。色彩方案 - 提供给原始图像的每个颜色的位数减1。这个值代表图像中所使用的整个调色板的大小,而不是图像中所使用的颜色的数量。例如,若该字段的值为3,则图像中所使用的调色板的每个色值占4位。短标志 - 表明全局色表是否被排序。如果该位置1,则全局色表按照重要性递减的原则进行了排序。典型地,是按照颜色的使用频度进行递减排序,使用频度最高的颜色排在色表的最前面。这样便可帮助解码器选择最好的颜色子集来成象。全局色表的尺寸 - 如果全局色表标志位置1,则该字段的值记录全局色表中所占用的字节数。全局色表该块包含一个按照字节顺序表示红-绿-蓝三元色的色表。全局色表用于那些没有局部色表的图像和纯文本扩充。在逻辑视屏描述块中的全局色表标志位置1时表示有全局色表。全局色表紧接在逻辑视屏描述块之后,占用的字节数为:3*2(全局色表尺寸+1)数据组成格式为: Red 0 Green 0 Blue 0 Red n Green n Blue n图像控制扩充(版本-89a) 图像控制扩充包含在处理一个成象块时所需的参数。扩充只包括一个数据子块。该块是可选的。通常只有一个图像控制扩充在成象块之前。这也是在一个数据流中对成象控制扩充的唯一限制。数据组成格式为: 扩充导入符(1字节)图象控制标记(1字节)块尺寸(1字节)延长时间(2字节)透明颜色索引(1字节)块结束(1字节)Packed Fields说明:保留 3 Bits配置方法 3 Bits用户输入标志 1 Bit透明颜色标志 1 Bit解释:扩充引入 - 用于识别一个扩充块的开始,该字段为固定值0x21。图像控制标号 - 识别当前块是否为图形控制扩充。该字段为固定值 0xF9。块尺寸 - 块中所包含的字节数。从块尺寸字段开始到快结束符(不含结束符)。该字段包含固定值4。配置方法 - 指示图像显示后的处理方法。值: 0 - 无指定的配置,解码器不需要做任何处理。1 - 不做配值。图像将被留在原位置。2 - 恢复背景颜色。图像所占的区域必须备恢复为背景颜色。3 - 恢复以前的颜色。解码器需要将图像区域恢复为原来成象的颜色。4-7 - 未定义。用户输入标志 - 说明在继续处理之前是否需要用户输入。可以和输入延时一起使用。透明标志 - 表明在透明索引字段是否给定透明索引。延时 - 如果不为0, 该字段指定以1/100秒为单位的时延数。透明索引 - 如果遇到透明索引,则显示设备的相关象素不被改变,继续处理下一个象素。块终止符 - 这个0长度字段标志着图像控制扩充得结束。图像描述符每一幅图像必须在逻辑视屏描述块中所定义的逻辑视屏界限之内。图像描述符包含处理一个基于图像的表的必要参数。在这个块中给定的坐标是参照逻辑视屏的像素坐标。该块是一个成象块,在其前面可以选择加上一个或多个控制块,如:图像控制扩充,或者是后面接有局部色表;图像描述符后面总是图像数据。它是一幅图所必需的。一幅图像对应一个图像描述符。数据组成格式为: 图象分隔符(1字节) 图象左坐标(2字节) 图象顶坐标(2字节) 图象宽度(2字节) 图象高度(2字节) (2字节) (1字节)Packed Fields说明:局部色表标志 1 Bit隔行处理标志 1 Bit短标志 1 Bit保留 2 Bits局部色表尺寸 3 Bits解释:图像分隔符 - 用于识别图像描述符的开始。取固定值0x2c局部色表该块包含一个按照红-绿-兰三原色的顺序排列的色表。该表作用于紧跟其后的图像数据。当局不色表标志位置1时,该表出现,且其后紧跟图像的描述符,它所包含的字节数等于3*2(局部色表尺寸+1)数据组成格式为: Red 0 Green 0 Blue 0 Red n Green n Blue n基于表的图像数据基于表的图像数据由一系列子块组成,每个子块最多255字节,包含一个为图中每个象素所指定的有效色表的索引。索引的顺序用LZW算法进行编码。数据组成格式为: LZW 最小编码尺寸(1字节) 图象数据数据子块(n字节)解释:LZW 最小编码尺寸:该字节用于决定在图像数据中用 LZW 编码最初的位数。注释扩充(版本-89a)注释扩充包含实际不属于gif数据流的文本信息。它适用于包括图像注释、描述或者任何其他非控制和非图像数据。注释扩充将被解码器忽略,或者被保留到以后处理。在任何情况下注释扩充也不能中断对数据流的处理。该块是可选的;在数据流中的出现量不加限制。数据组成格式为: 扩充导入符(1字节) 注释标记(1字节) 注释数据数据子块(n字节)块结束符(1字节)解释:扩充导入符 - 标识扩充的开始。该字段为固定值0x21。注释标号 - 标示某块为注释扩充。该段为固定值0xFE。注释数据 - 按照子块顺序,每个注释最少1字节最多255字节。序列结尾用块结束符标识。块结束符 -用来标识注释扩充的结束。纯文本扩充(版本-89a)纯文本扩充包括纯文本数据和将数据显示为图像所必需的参数。文本数据将用7位可印刷ASCII码字符编码。文本数据用在块字段中定义的单元格字符元素来成象。每个字符用一个单元成象。该块使用全局色表。它可以被图形控制扩充来修改。该块为可选块。数据组成格式为: 扩充导入符(1字节) 纯文本标记(1字节)块尺寸(1字节)文本格左坐标(2字节)文本格顶坐标(2字节)文本格宽度(2字节)文本格高度(2字节)字符单元宽度(1字节)字符单元宽度(1字节)文本前景色索引(1字节)文本背景色索引(1字节)纯文本数据数据子块(n字节)块结束符(1字节)解释:扩充导入符 - 标识一个扩充块的开始。取固定值0x21.纯文本标记 - 标识当前块为原文扩充。取固定值0x01.块尺寸 - 扩充中的字节数,取固定值12.文本格左位置 - 逻辑视屏的左边,用象素表示的左边列数,文本格顶位置 - 逻辑视屏的上边,用象素表示的上边行数。原文数据 - 子块序列,每个子块最少1字节最多255字节。该序列遇到块结束符时结束。块结束符 0,用来标志块结束。应用扩充(版本-89a)应用扩充包含应用说明信息;它遵守如下所述的扩充块的语法,块标记为0xff.数据组成格式为: 扩充导入符(1字节) 扩充标记(1字节) 块尺寸(2字节) 应用标识符(8字节)应用证明码(3字节)应用数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论