前言
昨天看到这篇文章Yelp 的缩包技巧:从40M降到20M,这篇文章详细介绍了使用webp前后对包大小的影响,看完后是不是很心动,那么问题来了,我们改怎么才能把我们包内的图片自动变成webp呢,且下面看。
android4.2.1及以后才原生支持webp,由于android4.2和4.2.x的API level都是17,所以要想直接使用webp需要在API 18以上。如果你的应用要兼容API18以下的Android设备,则需要使用libwebp.so和libwebp.jar进行webp格式转换。
webp官方指南
webp官方指南
该指南详细介绍了webp是什么,工作原理,webp支持,webp转换器下载。
如何在windows安装cwebp,dwebp
cwebp 可把png,jpeg格式的图片转为webp格式
dwebp 可把webp转为png,jpeg
安装说明
下载地址
配置环境,把安装路径配置到path路径下面,我的路径是"D:\program\libwebp-0.5.0\bin”,这样在命令行可以执行cwebp
测试指令 cwebp test.png -q 75 -o out.webp
windows上查看WebP格式图片方法
windows系统是不支持webp格式图片查看的,为了能够在windows上直接查看webp,我们需要安装WebPCodec。
WebP Codec for Windows
按照说明下载安装即可,安装完成后你的webp格式的图片就可以项jpeg、png格式的图片一样查看了。
Gradle转webp
下面本人定义了一个task,会自动把drawabel-xhdpi目录下的图片转为webp格式,把下面的代码放到工程目录的build.gradle里面即可
重新打包见证奇迹的发生吧。
task convertToWebpTask {
generateWebp()
}
def generateWebp() {
new File(getProjectDir(),"src/main/res/drawable-xhdpi").listFiles(new FileFilter() {
@Override
boolean accept(File pathname) {
return !pathname.getName().endsWith(".9.png") && (pathname.getName().endsWith(".png") || pathname.getName().endsWith(".jpeg"))
}
}).each { path->
convertTowebp(path)
}
}
def convertTowebp(File path) {
def name = path.getName();
name = name.substring(0,name.indexOf("."))
exec {
commandLine 'cwebp',"${path.getAbsolutePath()}",'-q','75', '-o',"${path.getParent()}/${name}.webp"
}
path.delete()
}