2011-05-30 35 views
2

我正在嘗試查找圖像的大小,但未加載到內存中。我用的是流動代碼計算位圖大小的方法?

BitmapFactory.Options o = new BitmapFactory.Options(); 
o.inJustDecodeBounds = true; 
BitmapFactory.decodeResource(a.getResources(), R.drawable.icon, o); 
int width1 = o.outWidt;  
int height1 = o.outHeight; 

現在,我做一些比較:

Bitmap icon = BitmapFactory.decodeResource(a.getResources(), R.drawable.icon); 
int width = icon.getWidth(); 
int height = icon.getHeight(); 

爲什麼寬度,高度不等於寬度1和height1?

+0

其中這兩個是正確的圖像的大小? {width,height}或{width1,height1} – f20k 2011-05-30 19:14:11

+0

圖像的原始大小是width1和height1。 – Misko 2011-05-30 20:36:12

+0

圖像可能正在基於dpi調整大小。這就是爲什麼我總是用inScaled = false加載BitmapFactory.Options的圖像。您應該能夠檢查兩個位圖的dpi並對它們進行比較。檢查它們是否與衆不同 – f20k 2011-05-30 21:01:59

回答

0

我不確定發生了什麼,但它可能是BitmapFactory在實際返回位圖時應用密度縮放(如描述here),但不是當它僅解碼其大小時。 (如果發生了這種情況,我會考慮提交bug報告。)

您可以通過將圖像從drawables目錄移動到drawables-nodpi來測試此理論。