如何在iOS中保存和下载GIF图片

电脑杂谈  发布时间:2020-04-18 12:21:50  来源:网络整理

怎么存gif图_怎么存gif图_玩图gif动图

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

业务要求:

怎么存gif图_玩图gif动图_怎么存gif图

您需要从Internet下载gif图片并将其保存到系统目录中,并显示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图片的地址怎么存gif图,我们可以使用以下代码保存图片

玩图gif动图_怎么存gif图_怎么存gif图

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直接保存到系统目录中.

玩图gif动图_怎么存gif图_怎么存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,我们可以获得下载文件的位置. 请注意,此文件位于应用程序缓存目录中,后缀为.tmp,我们可以根据业务需要将其复制到其他应用程序目录中.

结论:

同样,通过NSURLSessionDownloadTask,我们可以下载其他iOS系统不支持的文件类型,例如.doc,.pdf等.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shouji/article-179989-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 熊霄敖
        熊霄敖

        是专门坐数码的一条街

      • 陆叡
        陆叡

        要赶上现有成熟体系的战力还需要时间

      • 明帝
        明帝

        联合国授权了吗

      热点图片
      拼命载入中...