【Android Gradle 插件】自定义 Gradle 插件优化图片 ① ( 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 … " 选项 ,

在这里插入图片描述
会弹出如下对话框 , 进行图片格式转换为 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 参考文档



WebP 参考文档 :


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


博客资源 :

博客源码 :

猜你喜欢

转载自blog.csdn.net/han1202012/article/details/127403757