最新公告
  • 欢迎您光临51分享吧,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • [开源]基于 易 实现的Gif图片分割器,提取GIf图片中的每一帧                                                                                                                     

    不知不觉又好几天没有更新发新帖了,刚刚研究完成,来分享一下研究成果。说明:我发帖都是发质量良心帖,都有助于易友学习进步的,同时也希望觉得内容不错的易友,请多支持下,多加分、多点评、多进步,研究不易哎

      在网上,我们经常看到各种各样的图片,尤其是GIF图片的动态效果,让整个网站更加富有表现力!有时候,我们看到一些比较好看的GIF图片或者一些奇特的Gif图片,我们想要停留在某一帧看的清楚一点或者了解这个Gif动画到底是怎么实现的,怀着这种好奇的心理,我们来看一下,今天的开源项目,用 易 来实现GIF图片的预览和分离和保存。

    一、 GIF图片基本结构和原理

    1、GIF简介

      GIF(Graphics Interchange Format)是CompuServe公司开发的图像文件存储格式,1987年开发的GIF文件格式版本号是GIF87a,1989年进行了扩充,扩充后的版本号定义为GIF89a。 GIF图像文件以数据块(block)为单位来存储图像的相关信息。一个GIF文件由表示图形/图像的数据块、数据子块以及显示图形/图像的控制信息块组成,称为GIF数据流(Data Stream)。数据流中的所有控制信息块和数据块都必须在文件头(Header)和文件结束块(Trailer)之间。

      GIF文件格式采用了LZW(Lempel-Ziv Walch)压缩算法来存储图像数据,定义了允许用户为图像设置背景的透明(transparency)属性。此外,GIF文件格式可在一个文件中存放多幅彩色图形/图像。如果在GIF文件中存放有多幅图,它们可以像演幻灯片那样显示或者像动画那样演示。

    2、GIF文件结构

    GIF文件结构的典型结构如图1-01所示。为下文说明方便,在图片右边加了编号。

      图1-01

    数据块可分成3类:

    控制块(Control Block),图形描绘块(Graphic-Rendering Block)和专用块(Special Purpose Block)。

    (1) 控制块:

    控制块包含有用来控制数据流(Data Stream)或者设置硬件参数的信息,其成员包括:

    GIF文件头(Header) 

    逻辑屏幕描述块(Logical Screen Descriptor) 

    图形控制扩展块(Graphic Control Extension) 

    文件结束块(Trailer)

    (2) 图形描绘块:

    包含有用来描绘在显示设备上显示图形的信息和数据,其成员包括:

    图像描述块(Image Descriptor) 

    无格式文本扩展块(Plain Text Extension)

    全局调色板、局部调色板、图像压缩数据和图像说明扩充块。

    (3) 特殊用途数据块:

    包含有与图像处理无关的信息,其成员包括:

    注释扩展块(Comment Extension) 

    应用扩展块(Application Extension)

    除了在控制块中的逻辑屏幕描述块(Logical Screen Descriptor)和全局彩色表(Global Color Table)的作用范围是整个数据流(Data Stream)之外, 所有其他控制块仅跟在它们后面的图形描绘块。

    3、GIF结构详解

    由于GIF结构比较复杂,我们就简单讲解一下GIF的文件头吧,因为我们要用到,更多的资料请参看百度文库:http://wenku.baidu.com/view/2c0feaa6f524ccbff121841d.html。

    (1)文件头描述块(Header)定义GIF数据流(GIF Data Stream),它的结构如图1-02所示。文件头描述块(Header)由GIF标记域(Signature)和版本号(Version)域组成,是一个由6个固定字节组成的数据块,它们用来说明使用的文件格式是GIF格式及当前所用的版本号。GIF标记域(Signature)存放的是“GIF”,版本号域存放的是1987年5月发布的“87a”或者1989年7月发布的“89a”,或者更加新的版本号。

      1-02

    这里我们识别一个图片是不是GIF文件,就是判断文件的前三个字节是不是GIF,就算是图片呗重命名为jpg或者其他的,只要用浏览器打开,都是可以正常显示的,这也就是为什么有些jpg图片也会动的原因。同理PNG图片的前三个图片是PNG.

    (2)逻辑屏幕描述块(Logical Screen Descriptor)包含定义图像显示区域的参数,包括背景颜色信息。这个数据块中的坐标相对于虚拟屏幕的左上角,不一定是指显示屏的绝对坐标,这就意味可以参照窗口软件环境下的窗口坐标或者打印机坐标来设计图像显示程序。逻辑屏幕描述块的结构如图1-03所示

      1-03

    这里我们看到GIF的字段,可以读取GIF图片的实际高度和宽度,到这里就差不多了,其他的大家看百度文库的文档吧,我就不再说了。

    二、 GIF分解工具简介

      上面给大家讲了那么多的GIF文件的东西,可能大家看的有点不耐烦,目的主要是为了让大家了解GIF的结构,这样才能更好的读懂项目里面的代码。

    @aqwvwv

    文件下载

    解压密码:
    下载地址

    本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有,若为付费资源,请在下载后24小时之内自觉删除,若作商业用途,请到原网站购买,由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
    51分享吧 » 基于易实现的Gif图片分割器,提取GIf图片中的每一帧

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    51分享吧
    我们是忠实的分享者
    • 116会员总数(位)
    • 1770资源总数(个)
    • 29本周发布(个)
    • 0 今日发布(个)
    • 172稳定运行(天)

    51分享吧 51DZSC.COM

    开通VIP 站长亲测
    升级SVIP尊享更多特权立即升级