2016-09-25 56 views
0

我使用的密度爲420 dpi,屏幕尺寸爲1080x1920像素的Nexus 5X仿真器。我將一個原始大小的位圖加載到ImageView中。在磁盤上,位圖的大小爲1.3 MB和1280x851像素。 我的ImageView尺寸是寬度:全屏,高度:全屏。我的圖像具有32位顏色深度=每像素4字節。我把內存中的預期大小計算爲1080x1920x4 = 8.29 MB。Android:內存中的位圖大小

當我運行我的代碼並加載我的圖像時,它在內存中的大小約爲30MB。這是什麼原因,以及如何調整我的計算,以得到正確的估計?我當然知道將縮小圖像加載到小容器中的方法,但我試圖弄清楚如何計算完整圖像的大小。

由於

+1

「在磁盤上」 - 您的項目中是否有這個文件?或者您是否通過其他方式加載圖片(例如,從文件中,從網址中加載)? – CommonsWare

+0

在可繪製文件夾內部。我知道最好避免繪製文件夾中的高分辨率圖像,但我試圖找到正確的計算。我通過setImageResource(resId) – Ozzz

回答

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。

+0

加載圖像很酷,非常感謝 – Ozzz

+0

謝謝!你幫了我很多 – emaleavil

+0

我的位圖大小在星系邊緣7到h:3024和w:4032,這是否意味着它是3024 * 4032 * 4個字節? –