代码如下:

-(void)deCompositionGif{
    NSString *gitpathSource = [[NSBundle mainBundle]pathForResource:@"名称" ofType:@"gif"];
    NSData *data =[NSData dataWithContentsOfFile:gitpathSource];
    CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);
    //将gif分解成一帧帧
    size_t count = CGImageSourceGetCount(source);
    NSMutableArray *tmpArray =[[NSMutableArray alloc]init];
    for (size_t i = 0; i < count; i++) {
     CGImageRef imageref  =  CGImageSourceCreateImageAtIndex(source, 1, NULL);
        //将单帧数据转化成Image
        UIImage *image = [UIImage imageWithCGImage:imageref scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp];
        [tmpArray addObject:image];
        CGImageRelease(imageref);
    }
    CFRelease(source);

//前面两处释放是为了防止内存泄漏

int i = 0;
    for (UIImage *image in tmpArray) {
        NSData *data = UIImagePNGRepresentation(image);
        NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *gifPath = path[0];
        NSString *pathNum = [gifPath stringByAppendingString:[NSString stringWithFormat:@"%d.png",i]];
        i++;
        [data writeToFile:pathNum atomically:NO];
    }
    
}

OC引入#import <ImageIO/ImageIO.h>

swift引入import ImageIO

swift代码:

func deCompositionGif() {
        let gitpathSource = Bundle.main.path(forResource: "1", ofType: "gif")
        let data = NSData.init(contentsOfFile: gitpathSource!)
        
        let source = CGImageSourceCreateWithData(data!, nil)
            //将gif分解成一帧帧
        var count = CGImageSourceGetCount(source!)
        let tmpArray : NSMutableArray = []
        while count > 0 {
            let imageref = CGImageSourceCreateImageAtIndex(source!, 1, nil)

let  image = UIImage.init(cgImage: imageref!, scale: UIScreen.main.scale, orientation: UIImageOrientation.up)
            count -= 1;
            tmpArray.add(image)
        }

var i = 0
        
        for image in tmpArray {
            let data : NSData = UIImagePNGRepresentation(image as! UIImage)! as NSData
            let path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0]
            let pathNum = path + "\(i).png";
                i += 1;
            data.write(toFile: pathNum, atomically: true);
            UIImageWriteToSavedPhotosAlbum(image as! UIImage, nil, nil, nil)
            
            }
            
      
    }

最重要的一点是比忘了添加 <key>NSPhotoLibraryUsageDescription</key> <string>App需要您的同意,才能访问相册</string>  iOS 10如果访问必须添加否则闪退

在OC代码中没有进行保存到手机相册中,如果需要自己写入就好

分解gif图片并保存相关推荐

  1. 机器学习笔记(二)矩阵和线性代数 例:用Python实现SVD分解进行图片压缩

    线性代数基本只要是理工科,都是必修的一门课.当时学习的时候总是有一个疑惑,这个东西到底是干嘛用的?为什么数学家发明出这么一套方法呢,感觉除了解方程没发现有什么大用啊!但随着学习的深入,慢慢发现矩阵的应 ...

  2. 【转】前端图片该保存为什么格式?png or jpg?

    疑虑: 图片存储为web格式,该用什么格式保存呢?png?jpg?压缩比例该为多大?css spript的优劣?有时候我们可能会因为一张格式不正确的图片而导致设计品质的下降以及页面性能的降低.了解图片 ...

  3. python视频操作——python实现将视频分解为图片序列

    python将视频分解为图片序列 内容参考自博客~ 详细实现代码如下: import cv2# 读取视频,方法是来自cv2库的VideoCapture cap = cv2.VideoCapture(& ...

  4. python将视频分解为图片+将图片合成为视频

    系列文章目录 文章目录 系列文章目录 前言 一.python视频拆分+图片合成(源码一) 1.python视频拆分 1.python图片合成 二.python视频拆分+图片合成(源码二) 三.pyth ...

  5. 【数据增强】---- 使用 Pytorch 裁剪图片并保存

    文章目录 概述 实现方式 项目结构及代码 输出结果 补充 对文件夹里的所有图片批量裁剪 概述 最近需要制作一个数据集,由于数据集的数量不够,而这些数据集中的单张照片很大,因此可以通过裁剪的方式进行数据 ...

  6. 小程序画布画海报保存成图片可以保存实现完整代码

    老规矩先来个效果图: 因为是截图所以会有些模糊,在真机上会比较清晰 下面针对效果图来看看里面都画了什么元素,代码在文章的最后,大家想直接拷代码可以略过这,这里是方便大家理解代码. 首先,咱们的海报有几 ...

  7. php文章远程图片,php保存远程图片到本地 php正则匹配文章中的远程图片地址

    在添加文章的时候,很多情况下我们需要处理文章中的远程图片,将其保存到本地,以免别人网站删除后文章里面就无法访问了. 因此我们需要正则匹配文章中的图片地址, 这里我们使用php的正则表达式来实现:$co ...

  8. jsonhandle主界面没有显示格式_怎么将图纸导出成图片格式保存

    怎么将图纸导出成图片格式保存呢?接下来将与大家分享一下有关CAd图纸转换成图片进行保存的方法. 方法/步骤 为了实现CAd转图片操作,首先我们需要在电脑上安装一个CAD编辑软件,如图所示: 待CAD编 ...

  9. Winform中实现ZedGraph曲线图的图像复制到剪切板、打印预览、获取图片并保存、另存为的功能

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  10. tomcat中实现特定路径下的图片的url访问Tomcat配置图片保存路径,图片不保存在项目路径下...

    使用Tomcat作为服务器的时候,如果不配置图片保存路径,将图片保存在项目路径下,那么再次打war包发布项目可能会造成图片的丢失,每次重启前将图片先保存再copy到服务器明显不方便,这时可以配置图片保 ...

最新文章

  1. Failed to resolve:aar
  2. Android 自定义Dialog背景透明及显示位置设置
  3. ACE的接受器(Acceptor)和连接器(Connector):连接建立模式
  4. hashlib 模块 摘要算法
  5. celery 学习笔记定时任务和异步任务
  6. kbengine 的 nginx反向代理https/wss 配置 支持kbe负载均衡
  7. Workflow WF Reference Links for 2009-03-06
  8. 经典常用判断字符串是否有值
  9. 计算机ppt听课记录,怎样做好听课记录.ppt
  10. 直播企业掀“冲击IPO”浪潮,为何老玩家成受益者?
  11. 菜菜的sklearn-01决策树完整版
  12. 河北农大计算机专业全国排名,2019河北农业大学现代科技学院专业排名
  13. 多图片拼图怎么操作?这个方法不要错过
  14. autosar—com模块
  15. 元宇宙NFT最近最火的项目,该如何选择平台呢
  16. oracle flash_back oracle闪回技术详解,oracle flashback 闪回技术实例
  17. 【长期更新】计算机类企业网申地址内推码大整理
  18. JavaScript学习笔记(四)之浏览器篇
  19. OKHTTP和retrofit 网络框架集成的有https验证的APP破解抓包
  20. 合并 2 个有序列表(关键词:有序列表/有序/合并/归并)

热门文章

  1. SOAP协议是什么,它的优点是什么
  2. 【通信系统信道估计】
  3. 《解密家用路由器0day漏洞挖掘技术》学习笔记
  4. 计算机毕设 SpringBoot+Vue车辆租赁管理系统 网上汽车租赁系统 汽车租赁管理系统 汽车分时租赁系统Java Vue MySQL数据库 远程调试 代码讲解
  5. ubuntu安装阿里源
  6. java 流水_Java之流水号生成器实现
  7. 如何测试聊天机器人的 10 个最佳实践
  8. 给初学编程的人的忠告
  9. 勒索病毒端口勒索病毒通过哪个端口传播
  10. vueminder ultimate 2020中文版(电脑桌面日历工具) v2020.07