对于大多数移动端开发者,经常会和图片打交道,其中png和jpg是开发者经常会碰到的图片类型。然而,对于gif图片,由于iOS系统不支持直接处理gif动图,处理起来会麻烦一些。本文将讨论如何从网络下载并保存gif到系统目录。

业务需求:

需要从网络下载gif图片并保存到系统目录,并展示gif图片

一般做法:

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(queue, ^{

NSString *imgUrl = @"xxxx";

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:imgUrl]];

if (data) {

//以图片形式保存data到文件系统

}

});

这时候如果imgUrl是png或jpg图片的地址,我们可以用以下代码保存图片

UIImage *image = [UIImage imageWithData:data];

BOOL success = [UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES];

if (success) {// 保存成功

NSLog(@"save success");

} else {

NSLog(@"save failed");

}

然而对于gif格式图片,如果用上面的方法保存,只会得到一张静态图。iOS也没有提供类似UIImageGIFRepresentation的方法,支持直接保存gif到系统目录。

解决方案:

通过NSURLSessionDownloadTask获取gif图片

NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];

NSURLSession *session = [NSURLSession sessionWithConfiguration:config];

NSURL *url = [NSURL URLWithString:fileUrl];

NSURLSessionDownloadTask *task = [session downloadTaskWithURL:url completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {

if (error) {

NSLog(@"gif download error:%@", error);

} else {

NSLog(@"gif download success, file path:%@",location.path);

//图片下载已完成,处理数据

}

}];

[task resume];

通过NSURLSessionDownloadTask,我们成功地下载了gif图片。通过成功回调里面的location.path,我们可以获取到下载后的文件位置。注意,这个文件是在app缓存目录,而且后缀名为.tmp,我们可以根据业务需求复制到app其它目录。

结论:

类似的,通过NSURLSessionDownloadTask,我们可以下载其它iOS系统本身不支持的文件类型,比如.doc、.pdf等。

ios保存gif到相册_iOS如何保存下载GIF图片相关推荐

  1. ios保存gif到相册_iOS相册中的GIF图片的读取与保存

    大家都知道iOS的系统相册是不支持gif图片预览的.但是,这并不代表系统相册不能保存和读取gif图片.通过Safari长按gif图片,选择保存到相册,这时保存到相册里的图片就是gif的,虽然它不会动. ...

  2. ios保存gif到相册_IOS开发入门之iOS GIF图片导入到相册处理方法

    本文将带你了解IOS开发入门之iOS GIF图片导入到相册处理方法,希望对大家学IOS有所帮助 iOS GIF图片导入到相册处理方法 通过路径转成data数据,写入本地相册就行了: Java代码   ...

  3. android 视频相册,安卓11版本保存视频到相册,提示保存成功,相册里没有视频...

    安卓11版本,下载视频uni.downloadFile并保存到相册uni.saveImageToPhotosAlbum提示成功,但相册里没有视频 其他安卓版本和iphone,可以正常保存 save(v ...

  4. ios 加载大量图片崩溃_iOS sd_webImage加载大图片时导致内存飙升解决方法

    SDWebImage大家肯定都恨熟悉了,国内外太多的App使用其进行图片加载. 但是最近在使用过程中发现,我用SDWebImage加载多个图片,类似微博动态那种,在加载的过程中.我发现当图片分辨率比较 ...

  5. php curl 下载图片,CURL实现下载远程图片并保存到本地

    WEB开发中我们经常使用一些简单的采集功能,这样可以自动把远程服务器的图片或资源直接采集保存到本地服务器中:实现下载远程图片并把它保存到本地有很多方法,比如可以直接能过file_get_content ...

  6. iOS访问相册及拍照保存的实现实例

    iOS访问相册及拍照保存的实现实例 实现效果: 1.点击访问相册按钮,可以访问系统相册,选择以后返回在imageView中显示 2.点击拍照,访问摄像头,实现以后保存在相册中,返回在imageView ...

  7. Unity iOS截图并保存到手机相册总结

    Unity iOS捕捉相机拍到的画面并截图保存到手机相册总结 本文专门针对小白,详细(图文)的写了通过unity 3d实现ios捕捉相机拍到的画面并截图保存到手机相册的方法.(对大佬来说可能写的略显繁 ...

  8. iOS上传头像, 相册权限,相册权限,拍照上传,相册选择图片,拍照页面语言设置,保存到相册...

    2019独角兽企业重金招聘Python工程师标准>>> 1. 权限 在打开相机拍照或者打开相册选择图片之前, 有必要先判断先是否有权限, 如果没有权限应该给个提示, 让用户自己去设置 ...

  9. ios保存gif到相册_如何在iOS中保存和下载GIF图片

    对于大多数移动开发人员来说,他们经常处理图片,而png和jpg是开发人员经常遇到的图片类型. 但是,对于gif图片怎么存gif图,由于iOS系统不支持直接处理gif,因此处理起来会更加麻烦. 本文将讨 ...

  10. iOS从相册选择视频和保存视频到相册

    最近,在做有关视频操作的功能.需要从相册选择视频,处理之后再保存到相册. 选择视频: 方式一:用系统的UIImagePickerController 贴代码: - (void)selectAction ...

最新文章

  1. 【JAVA小游戏+水果售卖系统】基于GUI界面编程的水果“人生”模拟系统
  2. springboot + rabbitmq 用了消息确认机制,感觉掉坑里了
  3. 【Kaggle-MNIST之路】CNN+改进过的损失函数+多次的epoch(四)
  4. c语言库文件是dll还是lib,C语言之静态链接库与动态链接库(2)
  5. oracle 查看服务器密码修改,如何修改oracle用户密码
  6. 针对科技文章的多标签分类
  7. CppUnit源代码分析总结
  8. Cuda beginning
  9. Wannafly挑战赛27: E. 黄魔法师(构造)
  10. Mac OS黑苹果系统安装工具及懒人版镜像文件 for macOS High Sierra/macOS Sierra
  11. SHA256 算法 加密文件、防文件篡改、文件校验
  12. 方舟建筑代码指令大全
  13. cac会议投稿难度大吗_英文(会议)论文投稿准备与流程
  14. 金融学python应该学哪些知识_哪些Python基础知识必学
  15. 一个成都程序猿眼中的成都和天府软件园,先从蚂蚁金服说起…
  16. 看病(版权所有翻版必究)
  17. 【C语言】随机数函数rand和srand
  18. Redis介绍--列表(LISTS)数据类型(六)
  19. 第02讲:MyBatis通用Mapper
  20. 阿里云短信验证码模板

热门文章

  1. 什么是电感_共模电感和差模电感的区别
  2. PHP+SQlite 制作简单的留言板
  3. java 关键字 assert的学习
  4. 通过xml方式根据word模板导出word
  5. [转]U盘启动制作工具|大白菜启动制作工具
  6. 异构应用异构数据库用魔方智能中间件FIX平台转化
  7. 利用云片网提供的API发送短信
  8. 《可汗学院: 统计学》学习笔记
  9. 英语常用口语1000句
  10. Python DataTable用法(一)