【android學習】APP圖片內存計算

圖片尺寸大小計算

當圖片文件放在項目的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中讀取,就沒有縮放,直接使用圖片寬*高*相應的字節數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章