Android計算Bitmap大小getRowBytes、getByteCount()和getAllocationByteCount()

安卓中與圖相關的都是以bitmap存在的,我們經常會計算圖片加載到應用中,所佔內存的大小。

有個概念:一張圖片所造物理內存,也就是我們直接在手機上或電腦上查看圖片信息,裏面有個大小,比如說3.4M,但是加載到安卓應用後,它實際所佔應用內存並不一定是3.4M

bitmap中計算大小的方法有

  1. getRowBytes() 這個在 API Level 1添加的,返回的是bitmap一行所佔的大小,需要乘以bitmap的高,才能得出btimap的大小
  2. getByteCount() 這個是在 API Level 12添加的,其實是對getRowBytes()乘以高的封裝
  3. getAllocationByteCount() 這個是在 API Level 19添加的

官方推薦在API Level 19以上使用getAllocationByteCount() ,來獲取bitmap的大小

爲了方便使用以及解決兼容性問題,可以封裝個方法

public static int getBitmapSize(Bitmap bitmap){
        if (bitmap == null) {
            return 0;
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //api 19
            return bitmap.getAllocationByteCount();
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1){ //api 12
            return bitmap.getByteCount();
        }
        return bitmap.getRowBytes() * bitmap.getHeight(); //other version
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章