1. /** Gif的步骤
  2. 1. 拿到Gifd的数据
  3. 2. 将Gif分解为一帧帧
  4. 3. 将单帧数据转为UIImage
  5. 4. 单帧图片保存
  6. */

github地址: https://github.com/mancongiOS/UIImage.git

导入:

  1. #import <ImageIO/ImageIO.h> // 图像的输入输出文件
  2. #import <MobileCoreServices/MobileCoreServices.h>

实现:

  1. - (void)didCompositionGif {
  2.  
  3. //1. 拿到gif数据
  4. NSString * gifPathSource = [[NSBundle mainBundle] pathForResource:@"kobe" ofType:@"gif"];
  5. NSData * data = [NSData dataWithContentsOfFile:gifPathSource];
  6. #warning 桥接的意义 (__bridge CFDataRef)
  7.  
  8. CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);
  9.  
  10. //2. 将gif分解为一帧帧
  11. size_t count = CGImageSourceGetCount(source);
  12. NSLog(@"%zu",count);
  13.  
  14. NSMutableArray * tmpArray = [NSMutableArray arrayWithCapacity:];
  15. for (int i = ; i < count; i ++) {
  16. CGImageRef imageRef = CGImageSourceCreateImageAtIndex(source, i, NULL);
  17.  
  18. //3. 将单帧数据转为UIImage
  19. UIImage * image = [UIImage imageWithCGImage:imageRef scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp];
  20. [tmpArray addObject:image];
  21. #warning CG类型的对象 不能用ARC自动释放内存.需要手动释放
  22. CGImageRelease(imageRef);
  23. }
  24. CFRelease(source);
  25.  
  26. // 单帧图片保存
  27. int i = ;
  28. for (UIImage * image in tmpArray) {
  29.  
  30. i ++;
  31. NSData * data = UIImagePNGRepresentation(image);
  32. NSArray * path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  33.  
  34. NSString * gifPath = path[];
  35. NSLog(@"gifPath: %@",gifPath);
  36. NSString * pathNum = [gifPath stringByAppendingString:[NSString stringWithFormat:@"%d.png",i]];
  37. [data writeToFile:pathNum atomically:NO];
  38. }
  39. }

iOS_UIImage_Gif的分解的更多相关文章

  1. 06.LoT.UI 前后台通用框架分解系列之——浮夸的图片上传

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  2. 07.LoT.UI 前后台通用框架分解系列之——强大的文本编辑器

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  3. 01.LoT.UI 前后台通用框架分解系列之——小图片背景全屏显示(可自动切换背景)

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  4. 02.LoT.UI 前后台通用框架分解系列之——灵活的菜单栏

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  5. 03.LoT.UI 前后台通用框架分解系列之——多样的表格

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  6. 04.LoT.UI 前后台通用框架分解系列之——轻巧的弹出框

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  7. 05.LoT.UI 前后台通用框架分解系列之——漂亮的时间选择器

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  8. 08.LoT.UI 前后台通用框架分解系列之——多样的Tag选择器

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  9. java分解质因数

      package test; import java.util.Scanner; public class Test19 { /** * 分析:对n进行分解质因数,应先找到一个最小的质数k * 最小 ...

随机推荐

  1. Backpropagation反向传播算法(BP算法)

    1.Summary: Apply the chain rule to compute the gradient of the loss function with respect to the inp ...

  2. Kernels

    Let \(E\) be a set and  \(\mathscr{E}\)  a \(\sigma\)-algebra of subsets of  \(E\). Assume that the ...

  3. 深入理解Ember-Data特性(下)

    写在前面 最近比较忙,换了新工作还要学习很多全新的技术栈,并给自己找了很多借口来不去坚持写博客.常常具有讽刺意味的是,更多剩下的时间并没有利用而更多的是白白浪费,也许这就是青春吧,挥霍吧,这不是我想要 ...

  4. QQ揭秘:如何实现窗体靠边隐藏?【低调赠送:QQ高仿版GG 4.2 最新源码】

    QQ有个靠边隐藏的功能,使用起来很方便:在屏幕上拖动QQ的主窗体,当窗体的上边沿与屏幕的上边沿对齐时,主窗体就会duang~~地隐藏起来,当将鼠标移到屏幕上边沿的对应区域时,主窗体又会duang~~显 ...

  5. Etag缓存在PHP和NodeJS中的实现

    HTTP 提供了许多页面缓存的方案,其中属 Etag 和 Last-Modified 应用最广.本文会先介绍 Etag 的应用场景,然后说说他在 php 和 node 中的使用. 本文地址:http: ...

  6. (翻译)反射处理java泛型

    当我们声明了一个泛型的接口或类,或需要一个子类继承至这个泛型类,而我们又希望利用反射获取这些泛型参数信息.这就是本文将要介绍的ReflectionUtil就是为了解决这类问题的辅助工具类,为java. ...

  7. CSS样式重置

    ;;;;;;;;;; } input, select {     vertical-align:middle; }

  8. Atom

    http://blog.csdn.net/crper/article/details/45647459

  9. xamarin UWP平台下 HUD 自定义弹窗

    在我的上一篇博客中我写了一个在xamarin的UWP平台下的自定义弹窗控件.在上篇文章中介绍了一种弹窗的写法,但在实际应用中发现了该方法的不足: 1.当弹窗出现后,我们拖动整个窗口大小的时候,弹窗的窗 ...

  10. 大叔也说Xamarin~Android篇~监听返回键,单击返回某个webView,双击退出

    回到目录 这个操作在原生android里是很容易实现的,在xamarin里也不难,在activity里有方法OnKeyDown,我们只需要重写一下就可以了,然后通过webView重新加载到要返回的页面 ...