前言

记录一下最新遇到的需求,就是在播放的过程中生成gif表情包,这里我选择了iOS系统库CGImageDestinationRef

使用教程

创建CGImageDestinationRef

_url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, (CFStringRef)_exportURL, kCFURLPOSIXPathStyle, false);
// 300表示预计需要插入的图片,这个值如果小于预设值,CGImageDestinationRef会缓存对应的图片到cache里面,导致存在内存问题。因此,这个值最好设置的比你想插入的值更大一点。
_destination = CGImageDestinationCreateWithURL(_url, kUTTypeGIF, 300, NULL);

配置CGImageDestinationRef

NSMutableDictionary* dict = [NSMutableDictionary dictionaryWithCapacity:2];
[dict setObject:[NSNumber numberWithBool:YES] forKey:(NSString*)kCGImagePropertyGIFHasGlobalColorMap];
[dict setObject:[NSNumber numberWithInt:8] forKey:(NSString*)kCGImagePropertyDepth];
// loop表示循环的次数,0表示无限循环,其他表示循环的次数
[dict setObject:[NSNumber numberWithInt:_loop] forKey:(NSString*)kCGImagePropertyGIFLoopCount];NSDictionary* property = [NSDictionary dictionaryWithObject:dict forKey:(NSString *)kCGImagePropertyGIFDictionary];
CGImageDestinationSetProperties(_destination, (__bridge CFDictionaryRef)property);

添加图片到CGImageDestinationRef

// 指示每一帧之间的duration,单位为秒。
NSMutableDictionary* dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:0.1],(NSString *)kCGImagePropertyGIFDelayTime, nil];
NSDictionary *properties = [NSDictionary dictionaryWithObject:dict forKey:(NSString *)kCGImagePropertyGIFDictionary];CGImageDestinationAddImage(_destination, cgimage, (__bridge CFDictionaryRef)properties);

结束生成gif图片

CGImageDestinationFinalize(_destination);

iOS生成gif图片相关推荐

  1. iOS 生成条纹图片

    // 1.创建一行背景图片CGFloat rowW = self.view.frame.size.width;CGFloat rowH = 30;UIGraphicsBeginImageContext ...

  2. iOS二维码生成中间带图片Logo

    iOS二维码生成中间带图片效果图: ViewController.h 1 #import <UIKit/UIKit.h> 2 @interface ViewController : UIV ...

  3. iOS 生成二维码/条形码

    级别:★★☆☆☆ 标签:「iOS CIFilter」「CIQRCodeGenerator」「CICode128BarcodeGenerator」「二维码加logo」 作者: Xs·H 审校: QiSh ...

  4. android类似于ios剪切框图片,不必羡慕 iOS,Android 上也有这些好用的截图处理工具...

    原标题:不必羡慕 iOS,Android 上也有这些好用的截图处理工具 在截图编辑和 GIF 制作方面,iOS 平台有诸多独占且优秀的应用可以使用,例如利用 Picsew 截图拼接.Annotable ...

  5. 【愚公系列】2022年08月 微信小程序-view生成分享图片

    文章目录 前言 一.view生成分享图片 1.组件的封装 2.组件的使用 3.效果 4.第三方工具的使用 前言 微信小程序并不支持view直接转绘到画布上,想要实现海报功能必须通过以下4个步骤: 通过 ...

  6. iOS 任意切割图片

    iOS 任意切割图片 自定义圆形 通过一个镂空的模板选中想要切割的部分, 然后生成图片 必要的属性,  和蒙版 以及要切割的图片. (胖迪) var imageview = UIImageView.i ...

  7. php图片涂鸦,IOS_详解iOS App中图片的线段涂鸦功能的添加方法,接下来我们要讲图片的涂鸦, - phpStudy...

    详解iOS App中图片的线段涂鸦功能的添加方法 接下来我们要讲图片的涂鸦,我们分开一点一点拓展,先给图片上划线 创建项目 起名testAddLine 接下来我们在默认生成的ViewControlle ...

  8. iOS之实现图片裁剪的几种方式

    iOS之实现图片裁剪的几种方式 1.使用CGImageCreateWithImageInRect函数 CGImageCreateWithImageInRect函数是属于Core Graphics Fr ...

  9. 转: 通过Servlet生成验证码图片

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(九)-- 通过Servlet生成验证码图片 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedIma ...

最新文章

  1. 炼成优秀 SaaS 产品的三个要素?听腾讯、神策、网易的专家讲讲|PCon
  2. 独家 | 如何从头开始为MNIST手写数字分类建立卷积神经网络(附代码)
  3. leetcode算法第8题
  4. 使用R语言进行中文分词
  5. 为什么不可以使用哈曼顿距离_哈曼卡顿音乐琉璃1代2代评测,不但抓耳,还让你视线也难离开...
  6. 4.总结近5周以来的github上的工作情况,以图表方式分析你小组的工作情况、存在的问题及解决的方案。(尤心心)...
  7. Spring开发包介绍
  8. JVM:我就想知道我是怎么没的
  9. Nginx环境搭建Discuz论坛
  10. FFMPEG类库打开流媒体的方法(需要传参数的时候)
  11. 32位汇编语言helloworld_编程语言发展70年,50种不同语言输出Hello World,你知多少?...
  12. BPF类型格式BTF
  13. 卡尔曼滤波算法详细推导
  14. 1317_使用pyserial通过python读取串口数据显示的同时记录log文件
  15. C语言方波转换正弦波,方波转换成正弦波电路
  16. 如何修改linux启动项目路径,Jetty配置虚拟目录,实现把web项目发布到自定义目录,指定指定上下文访问;jetty编码修改;Jetty加入Linux service实现开机自启动...
  17. php如何获取百度快照,php代码获取 百度收录和百度快照时间
  18. 基金销售:基金转换与超级转换
  19. UI设计--蓝湖切图
  20. 485集线器在总线型数据采集系统的应用

热门文章

  1. Opencv remap函数
  2. Java培训学习之分词工具之HanLP介绍
  3. 大数据 排错日记0004——Unable to check if JNs are ready for formatting
  4. 在循环双链表的P所指的结点之前插入S所指的结点操作是
  5. 外卖联盟高级接口 - 美团联盟接口 美团外卖CPS+CPA推广活动推广API接口
  6. 微信领取淘宝内部优惠券教程免费
  7. 如何实现发票信息的自动录入与查验?
  8. 【技术科普】支持H.265视频网页Web播放的EasyPlayer.js设计理念与功能计划
  9. 【HR面试100问】一篇文章根治各种HR面的套路问题,文章给出参考答案~持续更新
  10. c# mailgun 发送邮件测试