今天有个需要,后台传的图片改成webp格式。WebP格式,是谷歌开发的一种旨在加快图片加载速度的图片格式,至于为什么用WebP,感兴趣的可以看一下这篇文章WebP 相对于 PNG、JPG 有什么优势?
其他话不多说,直接将怎样使用SDWebImag加载webp图片
1 . 把SDWebImage代码直接加到项目中,为什么直接加到代码,因为使用pod的会少一些SDWebImage的类
![](https://img.haomeiwen.com/i2962511/9a9cabe7bb68988e.png)
也有人说pod 'SDWebImage/WebP',但是使用这种需要配置vpn和http及https
感兴趣的可以看一下这篇iOS SDWebImage加载webP
因为我这条件有限,就没有尝试pod 'SDWebImage/WebP',不知道这种好不好用
2.我使用的是直接下载SDWebImage,然后手动导入
3因为iOS使用webp需要webp的支持,也就是WebP.framework,但是我看网上各种下载,我自己试了一下,都不是很好用,基本把能下载的都试了,但是都是各种报错,直到我都想放弃,把框架改为YYWebImage,因为YYWebImage支持webp是很好做的只需要两步,感兴趣的可以试试
(1)pod 'YYWebImage'
(2)pod 'YYImage/WebP'
然后YYWebImage就可以直接加载webp格式图片了,如果你的项目框架还没确定,可以直接使用这种
但是因为我框架已经确定,所以,不太好改,当时我想了个方案,给UIImageView创建一个分类,在分类中创建SDWebImage的下载图片方法,在实现中使用YYWebImage下载图片
3 但是我在此过程中想到为什么YYWebImage支持webp那么顺利呢,于是去YYImage的GitHub找了下原因,原来在YYImage中有个文件
![](https://img.haomeiwen.com/i2962511/d365749c13d17415.png)
其实SDWebImage支持webp也是需要这个的,但是网上方法很多都在header里少了几个.h文件,导致无法使用,我下载的不知道为啥,有没有这个.sh文件。。。于是我就想可不可以直接把这个拿来用,结果证明我的思路正确,确实可以加载出来
总结
总结一下过程,
1. 下载SDWebImage,拉到项目中
2.下载YYImage 把里面的WebP.framework拉到项目中
![](https://img.haomeiwen.com/i2962511/71a43d286393ee12.png)
3. 让SDWebImage支持WebP,设置如下Build Settings -- Preprocessor Macros , add SD_WEBP=1
![](https://img.haomeiwen.com/i2962511/da735b1e59cbac78.png)
然后你就发现在你的项目中可以直接使用SDWebImage,加载webp图片了
![](https://img.haomeiwen.com/i2962511/7e2fbbf028888a04.png)
到此就实现了我的目标了
喜欢的点击下收藏红心吧0.0
网友评论