圖片尺寸大小計算
當圖片文件放在項目的drawable目錄時候:
- drawable文件尺寸與pc中文件尺寸關係
目錄 | 屏幕密度 |
---|---|
drawable-ldpi | 120dpi |
drawable-mdpi | 160dpi |
drawable-hdpi | 240dpi |
drawable-xhdpi | 320dpi |
drawable-xxhdpi | 480dpi |
- 獲取手機的屏幕密度
C:\Users\Administrator>adb shell wm density
Physical density: 440
圖片尺寸計算公式:
在手機中的width= (手機的屏幕密度/drawable目錄設定的屏幕密度)* 圖片在PC上面的寬度
在手機中的height= (手機的屏幕密度/drawable目錄設定的屏幕密度)* 圖片在PC上面的高度
舉一個簡單例子:
圖片在pc上面的寬高爲
demo.jpg存放在drawable-xhdpi目錄,在代碼中獲取到的值
BitmapFactory.Options options = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.demo, options);
Log.d(TAG, "width: " + bitmap.getWidth() + " height : " + bitmap.getHeight());
Log.d(TAG, "drawable-xhdpi屏幕密度: " + options.inDensity);
Log.d(TAG, "內存大小 " + bitmap.getAllocationByteCount());
得到的結果是
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: width: 660 height : 880
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: drawable-xhdpi屏幕密度: 320
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: 內存大小 2323200
這裏的 660 = 440/320*480
880 = 440/320*640
圖片內存計算
先看圖片的格式及其所佔用的字節數,圖片加載如果沒有設置,默認是ARGB_8888
格式 | 字節數 |
---|---|
ALPHA_8 | 1個字節 |
RGB_565 | 2個字節 |
ARGB-4444 | 2個字節 |
ARGB_8888 | 4個字節 |
內存計算公式: 內存 = 圖片寬 * 圖片高 * 每個像素所暫用的字節數
舉個例子
上面的圖片內存: 2323200 = 660 * 880 * 4
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: width: 660 height : 880
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: drawable-xhdpi屏幕密度: 320
2019-07-30 17:59:54.938 2286-2286/? D/MainActivity: 內存大小 2323200
總結:
這裏主要是從drawable中讀取圖片,獲得的圖片尺寸大小需要根據相應的手機密度以及drawable密度做相應的縮放,如果是從sdcard中讀取,就沒有縮放,直接使用圖片寬*高*相應的字節數