Android apk瘦身最佳实践(五):图片压缩

之前讲过的几种 apk 瘦身方法里,除了通过 proguard 进行混淆压缩比较常规外,其他都是些奇淫技巧,对 apk 进行压缩的大小有限,适合对 apk 大小进行极致优化的场景,并且如果对配置不熟悉,很容易出现各种错误。但其实瘦身最有效的办法之一,就是进行图片压缩。

1. 只配置同一种分辨率下的图片

一般现在我们只配置一种分辨率的图片,现在主流的有 xhdpi、xxhdpi、xxxhdpi,但我们没必要配置3套图片,否则图片资源的大小呈倍数增长。高分辨的图片在低分辨率手机上展示,效果一般没问题,但是低分辨率的图片在高分辨率手机上展示则很可能会出现模糊,结合目前市场上手机的普通情况,目前我们选择了 xxhdpi 这套分辨率的图。也可以只选择 xhdpi 分辨率上的图,效果一般也没问题,结合自己的时实际情况选择。

2. 采用 TinyPng 进行图片压缩

网站地址:https://tinypng.com/

所用的每一个图片,都通过 TinyPng 进行压缩处理,有的比较大的图片可以反复压缩,直到没有压缩空间为止。

3. 使用 xml 定义的 drawable 资源

不要所有的地方都采用 png 图片,特别是像一些类似圆角背景、渐变的颜色背景等,能通过 xml 来定义成 drawable 的,尽量都不要直接使用 png 图片,一个 xml 文件比一个 png 图片会小很多。

4. 使用 .9 png 图片

有些设计师对 Android 不是很熟悉,切图时总会按照效果图切一张大图出来。如果能够使用 .9 图的,尽量跟设计师沟通清楚,虽然制作 .9 图会稍微麻烦一点,但是你要想想,压缩再多代码量也比不了一张大图的大小。

5. 使用 webp 格式的图片

Android 4.3以上就已经全面支持 webp 格式的图片了,不需要自己再做额外的版本兼容了。Android Studio 已经提供了很方便的工具,可以直接将 png 图片转换成 webp 格式了,当然可能会有少许的图片清晰度损耗。一张 100kb 的 png 图片,转成 webp 格式化,大小可能只有几 kb 了,压缩效率惊人。

那是不是可以将所有的 png 图片转换为 webp 图片了,答案是否定的。有的 png 图片转换后,图片大小可能比原图还大,这显然是不行的;有些小的 icon,本身已经很小了,再去压缩降低了清晰度,大小减少得微乎其微,似乎也没这个必要了;有的 webp 图片还是有点兼容性问题,曾经碰到过在某些手机上 webp 图片会花掉的现象。所以我们的处理原则是:

  • 小的 icon 图片大小比较小,为了高质量不会去压缩;
  • 类似引导图这种,都是全屏大小的图片,全部转换为 webp 格式;
  • 一些说明介绍性的 png 图片,如果大小超过 20kb,考虑转换为 webp 格式;
  • 对于 20kb 以下的这些图片,优先采用 TinyPng 进行压缩优化;

总的来说,webp 能节省很大的空间,但它不是万能的,根据情况而定。

6. 合理使用网络图片

对于有些并不是高频使用的业务场景,这里面的图片可以考虑使用网络加载的方式。将这些图片存储到服务器,需要用到的时候再来加载或者是预加载好。

7. 小结

以上是我常用的一些方法,只要平时开发的时候,注意这些问题就可以实现了。此外,还有其他的方式,例如使用矢量图,但是矢量图的定义个人觉得有点麻烦,为了自己的开发效率就放弃掉了。图片压缩是减小 apk 大小的最有效方式之一,只有平时注意这个问题,后面想为 apk 瘦身的时候就好办多了。

系列文章
Android apk瘦身最佳实践(一):去除R.class
Android apk瘦身最佳实践(二):代码混淆和资源压缩
Android apk瘦身最佳实践(三):资源混淆原理
Android apk瘦身最佳实践(四):采用AndResGuard进行资源混淆
Android apk瘦身最佳实践(五):图片压缩
Android apk瘦身最佳实践(六):采用D8编译器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容