gif有哪几种形式
GIF文件的数据,是一种基于LZW算法的连续色调的无损压缩格式,那么你对GIF了解多少呢?下面就让我来给你科普一下什么是gif。
gif的历史
在早期,GIF所用的LZW压缩算法是Compuserv所开发的一种免费算法。然而令很多软件开发商感到意外的是,GIF文件所采用的压缩算法忽然成了Unisys公司的专利。据Unisys公司称,他们已注册了LZW算法中的W部分。如果要开发生成(或显示)GIF文件的程序,则需向该公司支付版税。由此,人们开始寻求一种新技术,以减少开发成本。PNG(Portable Network Graphics,便携网络图形)标准就在这个背景下应运而生了。它一方面满足了市场对更少的法规限制的需要,另一方面也带来了更少的技术上的限制,如颜色的数量等。
在2003年6月20日,LZW算法在美国的专利权已到期而失效。在欧洲、日本及加拿大的专利权亦已分别在2004年的6月18日、6月20日和7月7日到期失效。尽管如此,PNG文件格式凭着其技术上的优势,已然跻身于网络上第三广泛应用格式。与GIF相关的专利于2006年8月11日过期。
gif的分类
GIF分为静态GIF和动画GIF两种,扩展名为.gif,是一种压缩位图格式,支持透明背景图像,适用于多种操作系统,“体型”很小,网上很多小动画都是GIF格式。其实GIF是将多幅图像保存为一个图像文件,从而形成动画,最常见的就是通过一帧帧的动画串联起来的搞笑gif图,所以归根到底GIF仍然是图片文件格式。但GIF只能显示256色。和jpg格式一样,这是一种在网络上非常流行的图形文件格式。
GIF主要分为两个版本,即GIF 89a和GIF 87a
GIF 87a:是在1987年制定的版本
GIF 89a:是1989年制定的版本。在这个版本中,为GIF文档扩充了图形控制区块、备注、说明、应用程序编程接口等四个区块,并提供了对透明色和多帧动画的支持
gif的语法格式
语法是用来表达序列的一种符号形式,并用这个表达序列中的一些对象来形成更大的对象。语法也用于表达在给定的位置出现对象的数目。在此给出的语法用来说明形成gif数据流的块序列,用一些规则列表来表达。下面列出用于gif语法的符号定义。
图例: <> 语法词
::= 符号定义
* 0个或更多的事件发生
+ 1个或更多的事件发生
| 替代元素
[] 可选元素
gif语法的符号定义:
<GIF数据流> ::= 头部 <;逻辑视屏> <;数据>* 尾记录
这个规则将<Gif 数据流>;实体定义如下。它必须以头部开始,头部后面接一个逻辑视屏实体,该实体要用其他规则来定义。最后,数据实体接结束符。数据实体后面的*表示数据实体可以在此位置出现0或多次。
<Gif 数据流> ::= 头部 <;逻辑视屏> <;数据>* 尾记录
<;逻辑视屏> ::= 逻辑视屏描述块 [全局色表]
<;数据> ::= <;成象块> |<;特殊用途块>
<;成象块> ::= [图象控制扩充] <;成象块>
<;成象块> ::= <;基于表的图象> |纯文本扩充
<;基于表的图象> ::= 图象描述符 [局部色表] 图象数据
<;特殊用途块> ::= 应用扩充 |注释扩充
gif数据流中的数据块可以分为三组:控制块、成象块和特殊用途块。
控制块,如:头部、逻辑视屏描述块、图像控制扩充和尾记录,包含用于控制处理数据流或设置硬件参数的信息。
成像块,如:图像描述符和纯文本扩充,包含用于在显示设备上成像的信息和数据。
特殊用途块,如:注释扩充和应用扩充,包含那些既不用于处理数据流也不用于在显示设备上成象的信息。