文章目录

  • ​​一、Android 中的 WebP 图片格式使用​​
  • ​​二、WebP 格式转换​​
  • ​​三、WebP 参考文档​​

Android Plugin DSL Reference 参考文档 :





一、Android 中的 WebP 图片格式使用



在 ​​Android 安装包优化​​ 专栏中 , 介绍了如何 给 Android APK 安装文件进行瘦身

  • 移除未使用资源
  • 最小化函数库资源
  • 支持特定的密度资源
  • 开启资源压缩
  • 使用 Tint 着色器
  • 使用 SVG 图片
  • 使用 lib7zr.so 处理压缩文件
  • 使用 WebP 图片替换 PNG 图片

等方法进行 APK 瘦身 ;



之后的系列文章开始介绍如何使用 自定义 Gradle 插件 , 在编译时将资源中的图片都转为 WebP 格式 ;

注意 :

  • 在低于 Android 3.2 版本的系统中 , WebP 格式无法使用 ;
  • Launcher 图标必须使用 PNG 格式的 ;
  • 9patch 图片不能转为 WebP 格式的 ;


使用 WebP 格式的图片 的前提是 API 版本需要大于 14 ;

使用 带透明度通道 的 WebP 格式的图片 的前提是 API 版本需要大于 18 ;



Android Studio 自带 WebP 转换功能 , 右键点击资源文件中的图片 , 弹出的菜单中有 " Convert to WebP … " 选项 ,

【Android Gradle 插件】自定义 Gradle 插件优化图片 ① ( Android 中的 WebP 图片格式使用 | WebP 格式转换 | WebP 参考文档 )_html


会弹出如下对话框 , 进行图片格式转换为 WebP 格式 ;

【Android Gradle 插件】自定义 Gradle 插件优化图片 ① ( Android 中的 WebP 图片格式使用 | WebP 格式转换 | WebP 参考文档 )_android_02






二、WebP 格式转换



美工交付给我们的一般都是 png 格式的图片 , 这里需要将其转为 WebP 格式的 ;

Google 推出了 WebP 图片格式 , 同时也推出了相应的 WebP 图片格式转换器 libwebp ;



参考 ​​【Android 安装包优化】WebP 应用 ( libwebp 源码下载 | Android.mk 和 Application.mk 构建脚本修改 | libwebp 函数库编译 )​​ 博客 , 可以到对应的资源页面下载 cwebp 工具 ;



下载 cwebp 工具



下载 libwebp-0.6.1-windows-x86-no-wic.zip 压缩包 , 解压后内容如下 :

【Android Gradle 插件】自定义 Gradle 插件优化图片 ① ( Android 中的 WebP 图片格式使用 | WebP 格式转换 | WebP 参考文档 )_android_03

进入 bin 目录 , 该目录下是工具的可执行文件 , 其中的 cwebp.exe 就是转换工具 ;

【Android Gradle 插件】自定义 Gradle 插件优化图片 ① ( Android 中的 WebP 图片格式使用 | WebP 格式转换 | WebP 参考文档 )_android studio_04


在命令行中执行 ​​cwebp.exe​​ 命令 ,

【Android Gradle 插件】自定义 Gradle 插件优化图片 ① ( Android 中的 WebP 图片格式使用 | WebP 格式转换 | WebP 参考文档 )_html_05

提示如下内容 :

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 ;

【Android Gradle 插件】自定义 Gradle 插件优化图片 ① ( Android 中的 WebP 图片格式使用 | WebP 格式转换 | WebP 参考文档 )_Android_06






三、WebP 参考文档



WebP 参考文档 :


Android NDK 编译构建脚本参考文档 :

博客源码 :