获取GIF图片中所有的单图

一、场景需求

iOS系统中不支持flash,所以gif图片无法播放。需要将gif中的所有单图拿出来,自己来实现轮播动画。ImageIO框架中提供了获取gif图片中所有单图的相关API。

二、使用简介

1.首先根据gif图片文件初始化CGImageSourceRef:CFDataRef可以通过读取gif文件来获取
CGImageSourceRef CGImageSourceCreateWithData(CFDataRef data, CFDictionaryRef options)
2.检查此文件是否是gif图片
UTTypeConformsTo(CGImageSourceGetType(imageSource), kUTTypeGIF) && CGImageSourceGetCount(imageSource) > 1
3.获取gif图片里面的单图数据
(1)获取图片数量:
NSUInteger numberOfFrames = CGImageSourceGetCount(imageSource);
(2)获取gif相关的属性字典:
  NSDictionary *imageProperties = CGImageSourceCopyProperties(imageSource, NULL);
  NSDictionary *gifProperties = [imageProperties objectForKey:(NSString *)kCGImagePropertyGIFDictionary];
(3)获取gif图片的循环次数
 NSInteger loopCount = [gifProperties[(NSString *)kCGImagePropertyGIFLoopCount] unsignedIntegerValue]
(4)循环获取单张图片数据以及对应单图的停滞时间  
  for (NSUInteger i = 0; i < numberOfFrames; ++i) {
  CGImageRef image = CGImageSourceCreateImageAtIndex(imageSource, i, NULL);
  NSTimeInterval frameDuration = CGImageSourceGetGifFrameDelay(imageSource, i);
  }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值