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

对于大多数移动端开发者,经常会和图片打交道,其中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等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值