為什么bitmap.getWidth()返回的結果跟原始圖片大小不一樣


現象:
我有一張圖大小是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。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM