分解gif图片并保存
来源:互联网 发布:淘宝网新款凉鞋罗马鞋 编辑:程序博客网 时间:2024/04/28 11:21
代码如下:
-(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图片并保存
- opencv分解视频并保存图片
- Gif 图片分解
- Qt 获取网络gif图片并保存到本地显示
- Android拍照并保存(对图片进行压缩,分解)
- Android拍照并保存(对图片进行压缩,分解)
- iOS学习笔记--gif图片分解
- 获取上传的图片并保存为缩略图,解决gif背景变黑问题
- 获取上传的图片并保存为缩略图,解决gif背景变黑问题
- 破解GIF动态图片分解出来单张图片
- iOS gif图片保存到相册里面
- java gif图片保存处理逻辑
- 下载图片并保存
- 缩放图片并保存
- 旋转图片并保存
- wxwidgets中分解GIF动画图片并显示播放
- vb.net 、c# 、GDI+分解显示GIF图片
- 续上集.关于gif图片的分解与组合
- bug:Xcode删除文件后missing file警告
- KafkaSpout 浅析
- PHP代码规范
- Multipart Upload with HttpClient 4
- Project_Conclude
- 分解gif图片并保存
- 在Fragment中点击一个TextView直接调起手机的打电话页面
- Linux基础命令
- 详解Activity生命周期(Lesson 4 - 重新创建销毁的activity)
- 整数划分问题——POJ放苹果问题
- 传统线程同步wait(),notify,notifyall()
- DrawerLayout和NavigationView使用详解
- 单例模式探究
- 根据屏幕的尺寸决定图片的显示大小