OSX下gif文件动画解析

原创 2015年11月19日 22:39:39
OSX下gif文件动画解析

        Appkit自带的NSImageView可以自动解析gif文件,根据gif文件关键帧生成动画。只要设置属性animates为YES时,就开启了动画动能。但是当父类View或自身开启layer-backed功能时,gif动画功能就不起作用了。

        其实解决这种问题,有多种方式吧。一种为子类化NSImageView,重写wantsUpdateLayer并返回YES。另外一种方式,就是自己解析gif文件,使用定时器,循环绘制各帧。

        本文打算使用第二种方式。思路大概如下:

1.使用NSImage加载gif文件。


2.从NSImage里获取实际表达图片数据的NSImageRep (NSImage其实类似于容器,NSImageRep才是正宗的跟图片数据相关的一种表达方式,对这一部分的理解,完全是个人观点,不知道理解的对不对)。


将NSImageRep类型转换成我们需要的类型NSBitmapImageRep,NSBitmapImageRep里面,我们感兴趣的属性包括NSImageFrameCount、NSImageCurrentFrame和NSImageCurrentFrameDuration。

各字段意义如下:
NSImageFrameCount:通过该字段,可以设置或获取gif图片总共多少帧动画。
NSImageCurrentFrame:通过该字段,可以设置或获取当前对应哪一个帧(值 <= 总帧数 - 1 )。
NSImageCurrentFrameDuration:通过该字段,可以设置或获取当前该帧动画的时间周期。


3.通过NSImageCurrentFrameDuration字段获取某一帧(当前帧为第0帧)的动画时间周期delaytime,开个定时间,每隔delaytime时间,我们重绘制一次,设置绘制的当前帧为下一帧(这里面做了一个简化处理,默认各帧动画时间意义,考虑到不一样的情况,请参考大神keefo写的代码:[https://github.com/keefo/gifdemo](https://github.com/keefo/gifdemo)),如此反复。

        最后附上demo(osx下oc与swift本):https://github.com/FyhSky/GifView_OC_Swift

        转载请注明出处:http://blog.csdn.net/skynullcode

相关文章推荐

Xib文件使用(三)——Object的使用

继续看xib文件的一些组件,如: 图中Object,可以看作以一个临时的对象容器,如果有什么需要xib文件去创建的对象,便可以在将Object拖入xib文件,并设置。图中的External ...
  • xunyn
  • xunyn
  • 2013年01月20日 19:02
  • 7623

iOS 7 中 StoryBoard 整体缩放

iOS 7 中 StoryBoard 整体缩放
  • sleks
  • sleks
  • 2015年12月11日 10:24
  • 1256

GIF图片的文件储存结构和动画原理

原文地址:[转]GIF图片的文件储存结构和动画原理作者:serfan 1.概述    GIF(Graphics Interchange Format,图形交换格式)文件是由Com...
  • wxzking
  • wxzking
  • 2011年11月10日 14:42
  • 6146

gif文件的加载--实现动画效果

下面说一下详细步骤吧:  1。下载 PictureEx.h和PictureEx.cpp两个文件 把这两个文件放在工程的文件夹里面,然后在将这两个文件添加到工程里面去,这样你的工程里就多了一...

故障GIF动画脚本文件

  • 2017年08月24日 17:18
  • 2KB
  • 下载

抓取动画存为GIF文件

  • 2015年06月27日 17:16
  • 124KB
  • 下载

自制android gif动画解析器

GifSurfaceView package com.tz.dream.pa.gifanimation; import java.io.IOException; import java.io.In...

GIF 动画文件制作工具

  • 2014年12月11日 18:58
  • 5.45MB
  • 下载

GifDecoder解析gif文件时抛出的OutOfMemory问题

GifDecoder是android下用于解析gif文件的开源代码,网上即可下载,但是在一些低端机,具体多低不好说, 我在开发过程中发现在一台总共600M内存的android手机上运行时,抛出了Out...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OSX下gif文件动画解析
举报原因:
原因补充:

(最多只允许输入30个字)