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版本对应的地址来替换原资源地址.

 

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

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

 

前往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格式动画图像的播放/编码/解码。

 

要最小代价的修复问题,只需要重写上面那个解析方法将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
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值