前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android图片性能优化详解

Android图片性能优化详解

作者头像
砸漏
发布2020-11-05 11:14:45
9670
发布2020-11-05 11:14:45
举报
文章被收录于专栏:恩蓝脚本恩蓝脚本

1. 图片的格式

目前移动端Android平台原生支持的图片格式主要有:JPEG、PNG、GIF、BMP、和WebP(自从Android 4.0开始支持),但是在Android应用开发中能够使用的编解码格式只有三种:JPEG、PNG、WebP,图片格式可以通过查看Bitmap类的CompressFormat枚举值来确定。

代码语言:javascript
复制
public static enum CompressFormat {
  JPEG、
  PNG、
  WebP;

  private CompressFormat() {

  }
}

如果要在应用层使用GIF格式图片,那么需要自己引用第三方函数库进行支持。

1.1 JPEG

JPEG是一种广泛使用的有损压缩图像标准格式,它不支持透明和多帧动画,一般摄像类作品最终都是以JPEG格式展示。通过控制压缩比,可以调整图片的大小。

1.2 PNG

PNG是一种无损压缩图片格式,它支持完整的透明通道,从图像处理领域将,JPEG只有RGB三个通道,而PNG有ARGB四个通道。由于是无损压缩,因此PNG图片占用空间一般比较大,会无形中增加最终APP的大小,在做APP瘦身时一般都要对PNG图片进行处理以减小其占用的体积。

1.3 GIF

GIF是一种古老的图片格式,它诞生于1987年,它的特点是支持多帧动画。

1.4 WebP

WebP由Google在2010年发布,它支持有损和无损压缩、支持完整的透明通道、也支持多帧动画,是一种比较理想的图片格式。在既保证图片质量又要限制图片大小的需求下,WebP应该是首选。

2. 图片的压缩

目前大多数APP都是PNG格式图片资源,我们可以通过几个工具对PNG图片进行压缩来达到瘦身的目的。

2.1 无损压缩ImageOptim

ImageOptim是一个无损的压缩工具,它通过优化PNG压缩参数,移除冗余元数据以及非必需的颜色配置文件等方式,在不牺牲图片质量的前提下,既减少了PNG图片占用的空间,又提高了加载的速度。

2.2 有损压缩ImageAlpha

ImageAlpha是ImageOptim作者开发的一个有损的PNG压缩工具,相比较而言,图片大小得到极大的降低,当然图片质量同事也会受到一定程度的影响,经过该工具压缩的图片,需要经过设计师的确认才能最终上线,否则可能回影响整个APP的视觉效果。

2.3 有损压缩TinyPNG

TinyPNG也是比较知名的有损PNG压缩工具,它以Web站点的形式提供,没有独立的APP安装包,同所有的有损压缩工具一样,经过压缩的图片,需要经过设计师的确认才能最终上线,否则可能回影响整个APP的视觉效果。

还有很多无损压缩工具,例如JPEGMini、MozJPEG等,大家自行选择适合自己项目的一个就行,主要是在图片大小和图片质量之间找到一个折中点。

2.4 PNG/JPEG 转换为WebP

如果你的APP最低支持到Android4.0,那么可以直接使用系统提供的能力来支持WebP,如果是4.0以下的系统,也可以通过在APP中集成第三方函数库例如webp-android-backport来实现对WebP的支持。根据Google测试,无损压缩后的WebP比PNG文件少了45%的文件大小,即使这些PNG文件经过其他压缩工具例如ImageOptim压缩后,WebP依然可以减少约28%的文件大小。

WebP转换的工具可以选择智图和iSparta等

2.5 尽量使用NinePatch格式的PNG图

.9.png图片格式简称NinePatch图,本质上仍然是PNG格式图片,它是针对Android平台的一种特殊PNG格式图片,可以在图片指定位置拉伸或者填充内容。NinePatch图的优点是体积小,拉伸不变形,能够很好地适配Android各种机型。Android SDK自带了NinePatch图的编辑工具,位于sdk/tools/draw9patch,点击即可启动;当然,Android Studio也集成了PNG转NinePatch的功能,我们只需右键点击某个需要转换的PNG图片,在弹出的对话框中选择Create 9-Patch File…即可自动完成转换。

3. 图片的缓存

图片的缓存框架有很多,常见的有四种

  1. Android-Universal-Image-Loader
  2. Picasso
  3. Glide
  4. Fresco

这四种图片加载框架的优劣就不在一一说明,因为随便一搜就可以知道答案,我们可以根据项目来权衡使用哪一个图片加载框架。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档