Android Plugin DSL Reference 参考文档 :
在 Android 安装包优化 专栏中 , 介绍了如何 给 Android APK 安装文件进行瘦身 , 介绍了
等方法进行 APK 瘦身 ;
之后的系列文章开始介绍如何使用 自定义 Gradle 插件 , 在编译时将资源中的图片都转为 WebP 格式 ;
注意 :
使用 WebP 格式的图片 的前提是 API 版本需要大于 14 ;
使用 带透明度通道 的 WebP 格式的图片 的前提是 API 版本需要大于 18 ;
Android Studio 自带 WebP 转换功能 , 右键点击资源文件中的图片 , 弹出的菜单中有 " Convert to WebP … " 选项 ,
会弹出如下对话框 , 进行图片格式转换为 WebP 格式 ;
美工交付给我们的一般都是 png 格式的图片 , 这里需要将其转为 WebP 格式的 ;
Google 推出了 WebP 图片格式 , 同时也推出了相应的 WebP 图片格式转换器 libwebp ;
参考 【Android 安装包优化】WebP 应用 ( libwebp 源码下载 | Android.mk 和 Application.mk 构建脚本修改 | libwebp 函数库编译 ) 博客 , 可以到对应的资源页面下载 cwebp 工具 ;
下载 cwebp 工具 , 下载地址 https://download.csdn.net/download/han1202012/17498155 ;
下载 libwebp-0.6.1-windows-x86-no-wic.zip 压缩包 , 解压后内容如下 :
进入 bin 目录 , 该目录下是工具的可执行文件 , 其中的 cwebp.exe 就是转换工具 ;
在命令行中执行 cwebp.exe
命令 ,
提示如下内容 :
D:\001_Develop\044_CWebP\libwebp-0.6.1-windows-x86-no-wic\bin>cwebp.exe
Usage:
cwebp [options] -q quality input.png -o output.webp
where quality is between 0 (poor) to 100 (very good).
Typical value is around 80.
Try -longhelp for an exhaustive list of advanced options.
-q
参数用于设置图片的压缩质量 , 一般设置 75 ;
执行
cwebp.exe -q 75 input.png -o output.webp
命令 , 可以将图片转为 webp 格式的 ;
命令行输出 :
D:\001_Develop\044_CWebP\libwebp-0.6.1-windows-x86-no-wic\bin>cwebp.exe -q 75 input.png -o output.webp
Saving file 'output.webp'
File: input.png
Dimension: 96 x 96 (with alpha)
Output: 1324 bytes Y-U-V-All-PSNR 40.80 40.83 36.92 39.87 dB
block count: intra4: 33
intra16: 3 (-> 8.33%)
skipped block: 0 (0.00%)
bytes used: header: 44 (3.3%)
mode-partition: 140 (10.6%)
transparency: 304 (99.0 dB)
Residuals bytes |segment 1|segment 2|segment 3|segment 4| total
macroblocks: | 25%| 41%| 16%| 16%| 36
quantizer: | 33 | 28 | 21 | 15 |
filter level: | 10 | 7 | 4 | 2 |
Lossless-alpha compressed size: 303 bytes
* Header size: 43 bytes, image data size: 260
* Precision Bits: histogram=5 transform=5 cache=0
* Palette size: 83
对比两张图片 , 原图 input.png 大小为 5KB , 转换完成后的图片为 output.webp 大小为 2KB ;
WebP 参考文档 :
Android NDK 编译构建脚本参考文档 :
博客资源 :
博客源码 :