Android Bitmap计算大小 getRowBytes和g
2018-03-01 本文已影响108人
我是吸血鬼
int size = bitmap.getRowBytes() * bitmap.getHeight();
获取大小,Bitmap所占用的内存空间数等于Bitmap的每一行所占用的空间数乘以Bitmap的行数
可以获取Bitmap大小的方法有如下几种:
- getRowBytes:Since API Level 1
- getByteCount:Since API Level 12
- getAllocationByteCount:Since API Level 19
兼容性解决方案:
public static int getBitmapSize(Bitmap bitmap) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //SInce API 19
return bitmap.getAllocationByteCount();
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) { //Since API 12
return bitmap.getByteCount();
}
return bitmap.getRowBytes() * bitmap.getHeight();
}
Note:
如果位图被重用、解码更小尺寸的其他位图或重新配置,getAllocationByteCount()的计算结果有可能比getByteCount()的结果大一些。