OSX下gif文件动画解析
来源:互联网 发布:孤独症 知乎 编辑:程序博客网 时间:2024/05/22 07:08
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
0 0
- OSX下gif文件动画解析
- 文件格式解析:GIF文件
- Linux 下制作Gif动画
- osx下查看jar文件
- Windows 8应用实例解析 - WinRT下创建GIF动画(Flipflop)
- 自制android gif动画解析器
- Linux下用GIMP制作GIF动画
- BCB下使用TGifImage显示GIF动画
- J2ME中GIF动画处理类文件
- Delphi2009原生支持GIF动画文件[转]
- gif文件的加载--实现动画效果
- iOS之GIF动画文件的播放
- gif动画
- gif 动画
- gif动画
- MAC osx下的plist文件读写
- csssprite css解析gif文件 使用csssprite
- delphi下应用GIF动画的一些测试
- 别浪费时间。别浪费时间。别浪费时间
- cvCreateFileCapture返回NULL
- 《Python基础教程第二版》学习笔记(一)第一章 基础知识
- .highcharts 函数
- 瞎玩php——初识cookie和session
- OSX下gif文件动画解析
- 给TextView添加超链接的四种方式
- 分页SQL的优化。 秒杀了。。。。
- ssh免密码远程执行sudo命令
- 安装linux jdk错误
- python array 类型 转换为 list 类型
- Android 三大图片缓存原理、特性对比
- java集合
- Android内存性能优化