`
luliangok
  • 浏览: 781399 次
文章分类
社区版块
存档分类
最新评论

gif图片格式解析

 
阅读更多
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
Green n
Blue n
像控制(版本-89a)
像控制充包含在理一个成象块时所需的参数。充只包括一个数据子该块是可的。通常只有一个像控制充在成象之前。也是在一个数据流中成象控制充的唯一限制。
数据组成格式为:
入符(1)
象控制标记(1)
尺寸(1)
<Packed Fields>
长时间(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)
<Packed Fields>(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)
用数据数据子(n)
块结束符(1)
解释:
充引入符 - 义该块。取固定0x21.
标记 - 标识该块为应。取固定0xFF.
尺寸 - 指示该块中包含的字数。取固定11.
标识 - 8格可印刷ASCII字符用来标识该应用所属的充。
- 3格字的序列用于标识符。一个用程序可以一算法来算一个二来唯一地识别这用是否数于充。
记录
该块为一个字段,用来指示数据流的束。取固定0x3b.
分享到:
评论

相关推荐

    春鹏图片格式分析器

    利用此软件可以对常用的图片文件格式进行分析。 对于bmp格式,能够分析出文件头、文件信息头、调色板和图像数据。 对于png格式,能够分析主要的块。 对于gif格式,能够分析主要的块结构。...是图片格式学习的利器。

    java处理GIF文件格式时进行相关分析的类

    生成和解析动态的GIF图片 有了以上对图象的基本处理之后,我们再来看看对动态GIF图片的处理。 GIF是一种由CompuServe创建的压缩和传送图像文件的格式。 GIF图像是基于颜色列表的(存储的数据是该点的颜色对应于颜色...

    图片格式解析jpeg bmp png gif

    关于jpeg,bmp,png,gif格式图片文件结构的解析,感觉已经很详细了……自己做的,如有不对,请指正……

    gif图片文件编解码

    编码用gdi解析常用图片格式,然后组装成gif 解码吧gif的每一帧转换成dib gif文件格式网上有很多介绍 gif用的变长lzw压缩算法: 没弄懂原理,只知道过程。压缩取一个字符作为后缀,看看字符串是否存在。存在,用...

    C++解码gif文件

    gif文件格式说明,以及用C++解码gif文件

    GIF图片原理和储存结构深入解析

    GIF是一种使用LZW压缩,支持多张图像的容器。支持256色,透明通道为1bit。作为互联网表情包的载体,GIF这项80年代的...针对这些问题,Mozilla发布了APNG来代替老旧的GIF技术,同时许多开源组件也用WebP格式来代替GIF

    解析图片格式支持多大10种以上,亲测可用!

    1、解析图片的信息,支持图片的类型支持格式,如 jpg、 png、bmp、 cur、 dds、gif、 hdr (pic)、 ...2、本程序不是通过扩展名来识别图片格式,而是通过文件头和文件格式特征来判断图片格式。 3、兼容windows、Linux

    VB Animation GIF ActiveX控件

    &lt;br&gt; VB Animation GIF ActiveX控件主要特色: 支持多数GIF89a标准,包括动画,延迟时间等 分析GIF的每一帧 自动调整大小,自动缩放 支持JPEG, BMP和任何支持VB的其他图片格式 纯VB代码开发,没有使用任何其他的...

    iSparta WebP 图片格式转换器

    iSparta WebP 图片格式转换器 , 已经替换了其中的 cwebp 库 , 可以无 wic 运行

    前端JS获取图片文件的真实格式信息

    通过前端JavaScript,使用二进制...支持 jpg、png、webp、gif、ico、bmp、svg、avif,这些当前主流浏览器都都支持的图片格式,正确真实的识别。 避免强制修改后缀名伪造图片格式,导致绕过格式限制,产生不必要的错误。

    车牌识别测试图片集(237幅车牌照片)(文件名均是车牌号)

    237幅车牌照片(文件名是车牌号)(车牌识别图片测试集)(图片均是jpg格式)(基本都是蓝牌私家车牌照)

    Python爬虫实现获取动态gif格式搞笑图片的方法示例

    主要介绍了Python爬虫实现获取动态gif格式搞笑图片的方法,结合实例形式分析了Python针对gif格式图片的爬取、下载等相关操作技巧,需要的朋友可以参考下

    图形图像文件格式大全

    分析了大量的图片文件格式,如(BMP,jpg,gif等)图片格式

    VC.NET简单实现GIF动画源代码

    自从gif动画格式推出这...现在有了GDI+,大家更忙活了,前几天看见 獾猪哥哥在《GDI+中GIF图片的显示》中用到的方法,深感麻烦,所以写了这篇文章。 关键字:picture,images,gif,animation,jpg,bmp,tif,ico,动画,图像

    基于MFC的图片浏览器(源码+论文+开题报告+ppt)

    1、详细分析了当今流行的各种图像格式的编码与解码方法。 2、利用Microsoft Visual C++ 6.0作为开发工具,使用MFC Application ...5、实现了各种图片格式的转换功能。 6、对所开发的软件进行了测试并提出了改进意见。

    文件格式分析器

    可通过拖动文件到执行文件,进行文件类型的判断 主要支持文件格式:BMP,JPEG,GIF87,GIF89,PNG,TGA_Normal, //TGA未压缩,TGA_RLE,//TGA经过RLE压缩后的 ,PCX,TIFF,ICO,CUR,TIFF,ANI,DDS,RAR,ZIP,WORD_FILE,RTF,XML,...

    数学分析习题集解 吉米多维奇 3&4

    数学分析习题集解,吉米多维奇.中文,包含6册. gif图片格式. 因文件较大,一共分成了5部分.除第五册被分割成两部分,其他可以选择性单独下载. 这是3,4册.

    BMP文件分析及用python读取

    一、BMP文件分析 1. 什么是BMP(位图)? 常见的图像文件格式有:BMP、JPG...BMP格式的图片,没有使用任何压缩算法,这种方式在以前使用的比较多,现在用的就比较少了,不过为了学习图像处理算法,所以先以该种格式的文

    弯柚博客Android自学教程-项目演练二-开发2D动态壁纸源码

    项目演练二我们就来开发一个简单的2d动态壁纸,我们知道Android智能手机并不像传统的手机那样可以直接设置一张gif格式的图片作为壁纸,普通手机使用gif格式的图片作为壁纸可以保留gif最大的特点:支持帧播放,可以给...

    网页视频播放软件代码,支持m3u8,mp4,flv,jpg,jpeg,png,gif,swf,f4v等格式播放

    该代码是一款在网页上播放视频的软件,主要特点是:免费,小巧,功能强大,定制方便。风格部分: 1:支持界面风格自定义 2:支持加密风格 常规功能: ...20:广告类型支持jpg,jpeg,png,gif,swf,mp4,flv,f4v

Global site tag (gtag.js) - Google Analytics