现在的位置: 首页 > 综合 > 正文

gif图片格式解析

2013年08月29日 ⁄ 综合 ⁄ 共 2579字 ⁄ 字号 评论关闭
 

gif图片格式解析
飘飘白云整理
参考:
网络中文gif资料
 
简介:
GIF(Graphics Interchange Format)CompuServe公司开发像文件存格式,1987开发GIF文件格式版本号是GIF87a1989行了充,充后的版本号定义为GIF89a
 
GFI像文件以数据(block)为单位来存储图像的相信息。一个GIF文件由表示/像的数据、数据子以及/像的控制信息块组成,称GIF数据流(Data Stream)。数据流中的所有控制信息和数据都必在文件(Header)和文件(Trailer)
 
GIF文件格式采用了LZW(Lempel-Ziv Walch)压缩算法来存储图像数据,定了允户为图置背景的透明(transparency)属性。此外,GIF文件格式可在一个文件中存放多幅彩色/像。如果在GIF文件中存放有多幅,它可以像演幻灯片那样显示或者像画那演示。
 
GIF .
  法是用来表达序列的一符号形式,并用个表达序列中的一些象来形成更大的象。法也用于表达在定的位置出现对象的数目。在此出的法用来明形成gif数据流的序列,用一些规则列表来表达。下面列出用于gif法的符号定
: <>
::= 符号定
* 0个或更多的事件
+ 1个或更多的事件
| 替代元素
[] 元素
gif法的符号定:
<GIF 数据流> ::= <逻辑视> <数据>* 记录
规则<Gif 数据流>体定如下。它必始,部后面接一个逻辑视体,该实用其他规则来定。最后,数据体接束符。数据体后面的*表示数据体可以在此位置出0或多次。
:
<Gif 数据流> ::= <逻辑视> <数据>* 记录
<逻辑视> ::= 逻辑视屏描述 [全局色表]
<数据> ::= <成象> |<特殊用途>
<成象> ::= [象控制] <成象>
<成象> ::= <基于表的> |文本
<
基于表的> ::= 象描述符 [局部色表] 象数据
<
特殊用途> ::= |释扩
 
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
字段的取从最的比41到最高的比14增的1/64
0 - 没有比1255 - 用于算的
全局色表 - 指示有没有全局色表,如果该标志位置1全局色表会接在该块之后出位也用于解是否用背景色索引字段。若位置1背景色索引字段的将指向背景色表。
色彩方案 - 提供原始像的色的位数减1代表像中所使用的整个色板的大小,而不是像中所使用的色的数量。例如,若字段的值为3则图像中所使用的色板的个色4位。
- 表明全局色表是否被排序。如果位置1全局色表按照重要性减的原则进行了排序。典型地,是按照色的使用减排序,使用度最高的色排在色表的最前面。这样便可帮助解选择最好的色子集来成象。
全局色表的尺寸 - 如果全局色表志位置1则该字段的值记录全局色表中所占用的字数。
 
全局色表
该块包含一个按照字节顺序表示-绿-三元色的色表。全局色表用于那些没有局部色表像和文本充。在逻辑视屏描述中的全局色表志位置1表示有全局色表。全局色表接在逻辑视屏描述之后,占用的字
3*2^(全局色表尺寸+1
数据组成格式为:
              Red 0
              Green 0
              Blue 0
              ……
              Red n

抱歉!评论已关闭.