如何读取GIF图像中的一桢(动籣GIF文件)

标题: 如何读取GIF图像中的一桢(动籣GIF文件)
TSS000039
开发伙伴平台: 60系列开发平台 1.0/2.0
设备, 软件版本:
大类: Symbian C++
子类: 多媒体
说明:下面的代码演示
了如何通过修改Bmpmanip例子,来完成从GIF图像文件中读取指定桢的功能。
Series 60 SDK中的CBmpmanipAppView例子(在/Series60Ex/bmpmanip/src/bmpmanipappview.cpp)
并按照如下代码进行修改:
Code:
  
TFrameInfo frameInfo;

// 从GIF图像文件中找到指定桢

// 将其定义到gifFrameIndex

// 获取桢信息

iConverter->FrameInfo(gifFrameIndex, frameInfo);

// 从GIF的大小中创建位图

TInt err = iBitmap->Create(frameInfo.iOverallSizeInPixels,

KDeviceColourDepth);

if (err == KErrCouldNotConnect)

{

// 处理错误

}

// 把一个GIF桢转换为位图

TRAPD(convertErr, iConverter->ConvertL(*iBitmap, gifFrameIndex));
 
  • 0
    点赞
  • 0
    收藏
  • 0
    评论
[开源]基于 易 实现的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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值