一张图片引发的思考——Android图片加载

本文探讨了客户端内存优化的重要性,并详细解析了不同图片配置对内存占用的影响。通过对比ARGB_8888与RGB_565两种配置,展示了合理选择能够显著减少内存消耗,避免应用程序因内存溢出而崩溃。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从今年四月开始规划我们客户端内存优化相关事宜,直到现在仍然觉得自己对此依然仅仅是窥豹一斑。只是不断地有新的感悟和理解。

一开始用Mat分析内存应用内存时对图片占用内存这一块实在是不能理解,为什么只有20几K的图片加载到内存中会占用0.5兆甚至更大的空间,百思不得其解啊。。。直到。。。

看到Bitmap.Config类中的说明,才恍然大悟~
枚举变量
public static final Bitmap.Config  ALPHA_8      每个像素占一个字节
public static final Bitmap.Config  ARGB_4444    每个像素占2个字节(已被弃用)
public static final Bitmap.Config  ARGB_8888    每个像素占4个字节
public static final Bitmap.Config  RGB_565      每个像素占两个字节

A  R  G  B
透明度 红色 绿色 蓝色
以上这些变量其实这都是色彩的存储方法:ARGB指的是一种色彩模式,里面A代表Alpha,R表示red,G表示green,B表示blue,其实所有的可见色都是右红绿蓝组成的,所以红绿蓝又称为三原色,每个原色都存储着所表示颜色的信息值。位图位数越高代表其可以存储的颜色信息越多,当然图像也就越逼真。
我们首页一张运营位的图片本身有33KB(640*214),这样图片被加载到内存中就会占到0.52兆的内存空间。
默认的配置是ARGB_8888,这样就会占用更多的内存!很容易OOM,因此如果对图片质量要求不高的话,可以使用占用内存较小的配置参数,以下是分别使用ARGB_8888和RGB_565我们应用对内存的使用情况:
两张图的访问路径基本一致,可以明显看出使用RGB_565可以有效地改善内存使用的情况。后续可能还需要团队的UED同学帮助确认一下这种损耗是否可以接受,嗯。

转载于:https://www.cnblogs.com/Cjch/archive/2013/05/28/3104331.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值