現象:
我有一張圖大小是64×64
執行如下代碼:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.noodle);
Log.d(TAG, "width: "+bitmap.getWidth()+" height: "+bitmap.getHeight()+ "\r\n");
這里打印出來的卻是192和192。為什么明明是64輸出的卻是192呢?
PS: 直接把png圖片改成了24×24, 然后讀取出來的是72×72.
查了一下,事實證明就是分辨率的問題。我的原圖單位是pixel。可是bitmap.getWidth()返回的值會根據dpi的不同而有所調整,而這個dpi可能會因為機型不同而不同,也就是說如果分辨率更高的手機,這里打印出來的可能是更高的數字。
驗證了一下:
getResources().getDisplayMetrics().density
用這個拿到手機的dpi,結果還真的是bitmap.getWidth()返回的結果等於pixel*density.
而我這里測試用的手機density正好是3.0!(64×3=192, 24×3=72)
Cool。。。