google webp在iOS上的使用
前段时间比较充裕,大家都说需要对APP的ipa包进行瘦身,想到了几点:
1、对部分组件代码打包成静态库
2、对APP内的资源文件进行过滤以及对图片进行再次压缩
3、利用google开源的webp工具,对图片进行压缩,然后再加载webp后缀的图片
其中第一点和第二点都使用过了,APP的ipa包也得到了明显的减小,但是由于工程内需要预加载的图片过多,以及很多图片都是一些较大的高清图片,图片压缩已经到了极致,不能再次进行压缩,否则会让图片显得模糊不清,故使用google的webp工具对图片进行压缩,这个工具可以让几百K的图片压缩后变成几K,而且图片不会变的模糊。
在github上我们可以查询到前人已经有人封装好了库给我们使用,但是我们pod的时候libwebp.a我们无法pod下来,这个就需要我们自己去google网站https://chromium.googlesource.com/webm/libwebp去下载webp的c代码,然后把这些基本导入到工程中,同时SDWebImage以前的版本因为集成了webp库是可以直接拿来使用的,不知后面为啥又把这个库给直接删除了。
目前需要用加载webp后缀图片的时候,我们还是需要SDWebImage这个框架中的一些方法的,这里就不多说,后面大家自己看源代码。下面我把webp的c语言代码直接封装成了webp.framework 静态库供自己使用,同时配合SDWebImage进行封装加载webp图片。具体使用如下:
1、cocoapod管理
pod 'WebpiOS'
2、手动导入
把webp文件下的文件导入到工程,同时工程依赖SDWebImage第三方框架
导入头文件 #import "UIImage+WebP.h"
@interface UIImage (WebP)
(nullable UIImage *)sd_imageWithWebPData:(nullable NSData *)data;
@end
图片转换工具下载地址 https://github.com/mymirror/webp-.git
such as:
UIImage *img = [UIImage sd_imageWithWebPData:[NSData dataWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"bg_third@3x" ofType:@"webp"]]];
UIImageView imageview = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, img.size.height320/img.size.width)];
[self.view addSubview:imageview];
[imageview setImage:img];
具体demo地址: