Android:内存中的位图大小

时间:2016-09-25 17:34:51

标签: android bitmap

我使用的是Nexus 5X仿真器,密度为420 dpi,屏幕尺寸为1080x1920像素。我将原始大小的位图加载到ImageView中。在磁盘上,位图的大小为1.3 MB和1280x851像素。 我的ImageView尺寸为宽度:全屏,高度:全屏。我的图像具有32位颜色深度=每像素4个字节。我计算出内存中的预期大小为1080x1920x4 = 8.29 MB。

当我运行我的代码并加载我的图像时,它在内存中的大小约为30MB。这是什么原因以及如何调整我的计算以获得正确的估计?我当然知道将缩小图像加载到小容器中的方法,但我试图弄清楚如何计算完整图像的大小。

由于

1 个答案:

答案 0 :(得分:4)

  

我计算出内存中的预期大小为1080x1920x4 = 8.29 MB。

屏幕尺寸与此无关。

res/drawable/res/drawable-mdpi/的旧同义词。您表示您的图像是为-mdpi设备设计的(~160 dpi),并且应该针对更高密度的设备进行上采样(并对-ldpi设备进行下采样)。

Nexus 5X被归类为-xxhdpi设备(~480 dpi)。这意味着原始图像的每个像素应映射到上采样图像中的9个像素(每个轴上480/160 = 3)。 1280 x 851 = 1089280像素* 9缩放系数* 4字节/像素= 39214080字节= 37.4MB。