ios SDWebImage显示webp格式图片

ios原生是不支持webp, 但是这图片优点很多,图片的加载需要对webp格式的图片做兼容,对于webp格式的图片需要经过处理才能支持。

实际上SDWebImage中已经支持了webp格式的图片,可以在UIImage与WebP之间进行图片的相互转换,所以对于iOS端的WebP格式图片的支持可以通过SDWebImage/WebP来支持处理,但是11.2以上的系统就无法解析Data了。

一、首先:

可以通过pod 'SDWebImage/WebP'来进行安装。但是安装可能会出现一些问题:在执行pod install后
终端提示Error installing libwebp.这是由于Pods提供的libwebp的资源地址无法连接,
最简单有效的修改方式就是修改libwebp的资源地址,再执行pod install即可解决。

在GitHub上找到了一个https://github.com/webmproject/libwebp.git,可以看到mirrored from https://chromium.googlesource.com/webm/libwebp,便用pod版本对应的地址来替换原资源地址.

ios SDWebImage显示webp格式图片_第1张图片

 

终端依次执行下面前三行命令,获得libwebp版本文件文件夹

pod repo               #查看 cocoapods 本地库路径
find xxx -iname libwebp    #在本地库中找到libwebp版本文件文件夹路径 xxx是根据上个步骤查看到的路径
cd xxx                  #进入libwebp版本文件文件夹 
ls -l              #查看所支持的版本

ios SDWebImage显示webp格式图片_第2张图片

 

前往libwebp版本文件文件夹,找到对应的版本文件夹
打开libwebp.podspec.json文件,并修改文件中source的值为https://github.com/webmproject/libwebp.git
终端重新进入工程文件夹下执行pod install即可

二、查看UIImage+WebP.m中解析源码发现,iOS11.1这方法能正常解析Data为image,但iOS11.2这个方法就无法解析Data了,推荐结合YYWebImage,YYImage支持WebP、APNG、GIF格式动画图像的播放/编码/解码。

ios SDWebImage显示webp格式图片_第3张图片

 

要最小代价的修复问题,只需要重写上面那个解析方法将WebP的data转换成UIImage并返回就行了。
YYImage.h有方法“+ (nullable YYImage *)imageWithData:(NSData *)data;”。
那么导入项目重写方法WebP无法展示的问题就得到了解决。
+ (UIImage *)imageWithWebPData:(NSData *)imgData error:(NSError **)error
{
    UIImage *webpImage = [YYImage imageWithData:imgData];
    return webpImage;
}


链接:https://www.jianshu.com/p/6ccd943e5421
 

你可能感兴趣的:(零碎知识点)