Apk瘦身之图片优化

375 阅读3分钟

为什么APK需要瘦身

  • 安装包变大,导致很多用户不愿意安装更新
  • 安装包变大,导致新用户不愿意下载
  • 安装包变大,流量使用增加,增加其它边际

以上3点都会影响用户体验,对于一个应用开发者来说,给用户更好的体验是我们的职责,其中也包括让我们的应用占内存更小。

优化方式

  • 图片资源的优化
  • 资源压缩
  • 其它优化

优化方式有很多,本篇文章主要探讨图片资源的优化。

图片资源优化

图片的类型有很多种,Android中图片资源一般是矢量图(VD)、PNG、JPG、WebP, 现在来看看它们适合的场景。

  • 使用矢量图片 : 矢量图片只需要放置一份,但是图片太大绘制时间长,制作复杂度高
  • 使用WebP : WebP体积更小,4.2.1+支持透明度,现在使用WebP没有什么技术难度
  • 使用png :有透明度,渐变,阴影的情况下选择png
  • 一般来说,有以上三种类型,就不使用jpg

由以上可知选择的顺序是

  1. 首先先选择VD
  2. 否则选择WebP
  3. 之后如果有透明通道等选择PNG
  4. 剩下的选择JPG

矢量图在Android5.0版本才开始支持,适配低版本手机,需要做额外工作,并且低版本普通控件background是不支持矢量图。根据 Google 的测试,无损压缩后的 WebP 比 PNG 文件少了 45% 的文件大小,即使这些 PNG 文件经过其他压缩工具压缩之后,WebP 还是可以减少 28%的文件大小。所以如果是支持4.3版本以上的应用,WebP是最好的选择。现在市面上的应用,基本上都是从4.4版本开始,WebP的兼容性就不考虑了。一般设计给的图都是png,将png(jpg或其他类型也可以)转换为WebP是我们本篇文章要探讨的重点。

WebP转换方式

  1. Android Studio选中图片(或包含许多图像文件的文件夹)-右键-convert to webp
  2. 采用转换工具转换:下载WebP转换工具(developers.google.com/speed/webp/…
    采用转换工具转换,有官方的文档,写得很详细,这里不再举例如何使用。

用Android Studio转换

webp格式是谷歌推出的一种有损压缩格式,相比png或者jpg格式,图片损失的质量几乎可以忽略不计,但是压缩后图片的体积却比png或者jpg要小很多,谷歌已经将这种压缩格式集成到开发工具AndroidStudio中。Android Studio选中图片-右键-convert to webp,会出现一个弹框,如图。

弹框中各项都做了中文解释,重点有几个

  1. 有损压缩可以选择比例
  2. .9图不支持压缩
  3. 支持无损和透明的WebP图像只能在Android 4.3和更高版本中使用,如果是低于4.3版本,则会自动选择最后一个选项。

点击OK进入下一步,如图

可以看到,在有损压缩比例为%75的情况下,267.2KB的图片已经减少到84.0KB,而且从图片的质量上看,肉眼看不出差别,运行到手机上,图片和原来的看不出差别。可以手动调节质量比,质量比越低,损伤越大。一般我都是直接用Studio自动设置的75%,这个比例,肉眼看不出和原图有差别。

WebP比起png和jpg等图片格式,既保证了图片的质量,又减小了体积。只要应用支持的是Android4.3以上的版本,我们就可以大范围的使用,从而有效的减少应用的体积。还在等什么,动动手指,看看图片体积减少了多少!