图片的加载和显示是每个APP都避免不了的问题,再了解Android中如何图片优化之前,先看一下Android系统支持的图片格式。

1. 图片的格式

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

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. 图片的缓存

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

  • Android-Universal-Image-Loader
  • Picasso
  • Glide
  • Fresco

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

Thanks

《Android高级进阶》—顾浩鑫

Android性能优化之图片优化相关推荐

  1. 前端性能优化(图片优化)

    从输入URL到页面加载完成的过程:首先通过DNS(域名解析)把URL解析为对应的IP地址,然后与该IP地址确定的服务器建立起TCP网络连接.随后向服务器发送HTTP请求,服务器处理完HTTP请求后把目 ...

  2. 前端性能优化之图片优化

    图片优化的价值 为什么要做图片优化?图片优化的收益有多大? Google官方的最佳实践中关于图片优化有下面这样一段描述: 对于网页来说,在所下载的字节数中,图片往往会占很大比例.因此,优化图片通常可以 ...

  3. Web 性能优化: 图片优化让网站大小减少 62%

    摘要: 压缩各种格式的图片. 原文:Web 性能优化: 图片优化让网站大小减少 62% 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 这是 Web 性能优化的第二篇,上一篇在下面看点 ...

  4. 前端每周清单第 34 期:Vue 现状盘点与 3.0 展望,React 代码迁移与优化,图片优化详论

    新闻热点 国内国外,前端最新动态 Microsoft 宣发面向 iOS 与 Android 平台的 Microsoft Edge:为了保证 Windows 用户各平台使用体验的一致性,Microsof ...

  5. 前端每周清单第 34 期:Vue 现状盘点与 3.0 展望,React 代码迁移与优化,图片优化详论... 1

    前端每周清单第 34 期:Vue 现状盘点与 3.0 展望,React 代码迁移与优化,图片优化详论 作者:王下邀月熊 编辑:徐川 前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解 ...

  6. 网站SEO优化之图片优化方法

    网站SEO优化之图片优化方法 网站中图片的优化是很多站长都比较容易忽略的细节,我们知道,对于搜索引擎目前的技术来讲,是无法识别图片的内容信息的,但为了提升用户体验,我们在进行文章或者网站布局时,必须进 ...

  7. Android App 性能优化之图片优化

    接下来说明一下关于其他内存问题.图片问题,作为一个优秀的Android开发者,在图片的类型选择,图片显示前的处理都是要好好考虑的,因为不同类型图片在Android中的显示代价是不同的,使用不同显示方式 ...

  8. Android:最全面详细的性能优化攻略(含内存优化、内存泄漏、绘制优化、布局优化、图片优化、APK优化、多线程优化、列表优化等)

    前言:佛教中有一句话:初学者的心态,拥有初学者心态是件了不起的事情.真正的大师永远怀有一颗学徒的心. 一.概述 在Android中,性能优化是细分领域中最难且也是知识面涉及最深和最广的方向之一. 更快 ...

  9. Android 系统性能优化(30)---Android性能全面分析与优化方案研究

    Android 性能优化 1.结合以下四个部分讲解: 性能问题分类 性能优化原则和方法 借助性能优化工具分析解决问题 性能优化指标 2性能问题分类 1.渲染问题:过度绘制.布局冗杂 2.内存问题:内存 ...

  10. Android内存优化之图片优化

    关于图片优化,大概如下 为什么要进行图片优化 相信大概刚开始学习Android的时候有过图片过大而直接报错的情况,下面简单介绍一下OOM问题,Android支持的图片格式及图片优化的几种方式 什么是O ...

最新文章

  1. 【知识积累】C#中结构体和类的区别
  2. Windows 上看端口 找PID
  3. 淘宝文件系统大文件结构
  4. Linux 之四 Ubuntu 20.04 WiFi 无法使用、设置无法显示、远程桌面、SSH、Git、PPA、FFmpeg 等各问题记录
  5. Mybatis中 Dao接口和XML文件的SQL如何建立关联
  6. OpenGL Shadow Mapping阴影贴图的实例
  7. 从零开始数据科学与机器学习算法-分类与决策树-06
  8. 【KDD20】主题模型在图模型中的应用专题
  9. unity cube自转的同时公转
  10. 使用 Jupyter Notebook
  11. linux安装ADS软件,Ubuntu 10.10下安装ADS 2009 Update1
  12. 雨点效果——HTML5之特效
  13. 主动事务处理器编写BFM
  14. java调色器_[求助]java中用调色器改变面板的问题
  15. app软件小程序开发
  16. 2017 Multi-University Training Contest 1 solutions BY 北京航空航天大学
  17. 银屑病推荐益生菌摄入(持续更新中)
  18. 崩坏3android版礼包,崩坏3永久有效兑换码大全 崩坏3永久有效礼包兑换码汇总
  19. 天玑1300和骁龙870哪个好 天玑1300和高通骁龙870差距
  20. vscode 配置 vetur插件

热门文章

  1. 苹果android投屏,iphone怎么投屏到mac?苹果手机投屏到苹果电脑方法
  2. 字典(数字大小写转换器)
  3. 修改antd下拉框样式
  4. 区县级应急综合管理系统功能
  5. mysql程序设计考试app_MySQL数据库设计与应用知到APP期末考试完整答案
  6. gif怎么裁剪尺寸?一键gif裁剪工具推荐
  7. 低版本向日葵本机识别码和验证码提取
  8. 中文拼音排序(web前端实现)
  9. qqxml代码天气预报qqxml代码跟url跳转的关系
  10. 【计算理论】正则语言 ( 正则语言运算 | 正则语言封闭性 )