引用链接
结果分析
同一张图片,放在不同目录下,会生成不同大小的Bitmap
Bitmap的长度和宽度越大,占用的内存就越大
图片在硬盘上占用的大小,与在内存中占用的大小完全不一样
下面我会对上面几个问题一一解释。
我们以放在drawable文件夹下面的图片为例,加载到内存之后,2160*3840大小的Bitmap占用的内存为
2160 * 3840 * 4 = 3317,7600 byte = 3,2400kb = 31.640625 M
所以drawable文件夹下的App内存占用 = 原始内存8.31M+图片内存31.64M= 39.95M ,与实际内存占用39.88M存在0.1755%的误差,在误差范围之内。
先简单解释一下上面的计算公式,长*宽是图片的像素总数,乘以4则是因为一个像素占用A、R、G、B四个通道,每个通道占用8位,所以描述一个像素需要32位即4个字节。
一个颜色通道需要8位描述,2^8=256,所以每个颜色通道就有256种状态。如果把彩色图转化成灰阶图的话,也有256种状态分割从白色到黑色之间的过渡颜色。
当然,也并不是所有格式的图片每个像素占用4字节,这和图片在加载时设置的Bitmap.Config有关,默认的是Bitmap.Config.ARGB_8888,其他类型如下:
Bitmap.Config.ALPHA_8
此时图片只有alpha值,没有RGB值
A 占 8bit = 1字节 = 1像素
Bitmap.Config.ARGB_4444
一个像素占用2个字节,alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各占4个bites共16bites,即2个字节
ARGB各占8bit(4 * 4)= 16bit = 2字节 = 1像素
Bitmap.Config.ARGB_8888
一个像素占用4个字节,alpha(A)值,Red(R)值,Green(G

本文探讨了Android中图片在不同drawable文件夹下的内存占用情况,分析了Bitmap内存计算原理,指出图片硬盘大小与内存占用的差异源于压缩方式。建议使用适当分辨率的切图并正确放置在drawable目录,以避免内存浪费和性能影响。
最低0.47元/天 解锁文章
187

被折叠的 条评论
为什么被折叠?



