我正在使用密度为 420 dpi 且屏幕尺寸为 1080x1920 像素的 Nexus 5X 模拟器。我将原始大小的位图加载到 ImageView 中。在磁盘上,位图的大小为 1.3 MB 和 1280x851 像素。
我的 ImageView 尺寸是宽度:全屏,高度:全屏。我的图像具有 32 位颜色深度 = 每像素 4 个字节。我计算出内存中的预期大小为 1080x1920x4=8.29 MB。
当我运行我的代码并加载我的图像时,它在内存中的大小约为 30MB。这是什么原因?如何调整我的计算以获得正确的估计?我当然知道将缩小图像加载到小容器中的方法,但我试图弄清楚如何计算完整图像的大小。
谢谢
最佳答案
I calculated the expected size in memory as 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。
关于Android:内存中的位图大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39689798/