一、场景需求
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);
  }

获取GIF图片中所有的单图相关推荐

  1. np.unique函数获取mask图片中不同像素数

    np.unique函数获取mask图片中不同像素数 @Data 2022/12/9 代码: import os import numpy as np from PIL import Imagedef ...

  2. python如何读取二进制文件为图片_python读取图片,并获取每个像素点的二进制值...

    python进行图片处理或识别的时候,通常第一步是获取每个像素的二进制值.(python 版本号为3.5) 具体过程如下: 1.如果没有安装image包,则首先需要安装image包.命令:pip3 i ...

  3. pytorch中数据集获取

    1.从数据集中导入Dataset from torch.utils.data import Dataset help(Dataset) from PIL import Image #导入图片包 img ...

  4. 对WEB前端的几段思考(一)——界面设计和性能优化(整理中)

    尽管我并非艺术出生,既没有任何设计基础,又没有较高艺术涵养,也深谙在短时间内创造一定艺术造诣并非易事,但是既然当初选择从事网站前端开发,我的目光不能仅停留在前端代码上.作为一名志向在前端领域发展的人员 ...

  5. coco数据集大小分类_MicroSoft COCO数据集

    安装错误 no such file or directory: 'pycocotools/_mask.c' 解决办法: pip install cython 评价标准 COCO数据集介绍 COCO数据 ...

  6. C#对图片的几种简单处理 [ZT]

    又有一段时间没有更新了,缺少学习的热情了.今天贴几个图片处理的小技巧,希望对大家有用: (1)如何获取.gif图片中的各个帧? (2)如何获取图片的缩略图? (3)如何"截取"图片 ...

  7. .NET基础示例系列之二十:对图片的几种简单处理

    又有一段时间没有更新了,缺少学习的热情了.今天贴几个图片处理的小技巧,希望对大家有用: (1)如何获取.gif图片中的各个帧? (2)如何获取图片的缩略图? (3)如何"截取"图片 ...

  8. android 指示灯权限,Android实现LED灯显示效果

    LED显示效果 项目地址 效果图a 原理 广告牌中经常能看到上面这种显示效果,使用LED灯实现文字甚至是图片的显示,那如何在Android中实现这种效果呢? 通常的做法应该是获取字体的点阵信息,然后经 ...

  9. 微软认知服务开发实践(2) - 计算机视觉

    前言 计算机视觉所涉及的面很广泛,Computer Vision API中提供了几个常用的分析功能,可实现解读图片内容信息,对图片进行OCR识别,生成缩略图,未来也许会增加更多功能.本文将针对其分别是 ...

最新文章

  1. 共享可写节包含重定位_艾瑞咨询:2020年数说双11电商购物节报告
  2. IIS 7上安装SQL SERVER 2005报表服务可能导致不能正常连接
  3. mysql查询大于等于效率_mysql 中4 OR 6的效率要大于 !=5?
  4. arm-none-linux-gnueabi,arm-none-eabi 与arm-eabi 区别 及 arm-none-linux-gnueabi安装
  5. One Day-XML:XSL
  6. [转]第一章 Windows Shell是什么 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987862】...
  7. codeforces1553 F. Pairwise Modulo(数学)
  8. python psycopg2使用_Python中用psycopg2模块操作PostgreSQL方法
  9. CPU上电后加载程序的流程 | 基于RK3399
  10. 我的内核学习笔记15:海思Hi3516平台GPIO使用记录
  11. C语言:存储类型,内存管理
  12. 在区块链的世界里,美国CFTC希望成为一个节点
  13. 数学建模系列(三)-评价模型(六)---神经网络评价
  14. java heap space 什么意思_java heap space是什么意思?
  15. Unity资源加载之Assetbundle(一)
  16. 【点云配准算法】【NDT】
  17. 比较强大的破解软件网站
  18. 水星mr807虚拟服务器,水星MR807路由器怎么连接Internet上网
  19. 关于iOS tableview自定义区头
  20. [SOA介绍]什么是SOA

热门文章

  1. 如何使用jmeter进行并发登录测试
  2. Flume原理及使用案例
  3. poj 3485 区间选点
  4. 修改Netbeas的注释结构
  5. linux——线程通信(2)
  6. Leetcode--164. 最大间距
  7. maven安装与项目创建
  8. python百度翻译接口_python3 调用百度翻译API翻译英文
  9. linux socket资源耗尽,TCP的socket资源被耗尽的问题
  10. foreach 循环达到条件的第一次就停止_是否应该停止在JavaScript代码中使用forEach()?...