Bitmap内存 = 图片长度 x 图片宽度 x 一个像素点占用的字节数;
图片长宽即为图片的分辨率,一个像素点占用的字节数则是由Bitmap.Config决定的,
- Bitmap.Config.ALPHA_8:
- 8位ALPHA图,也就是每个像素占1个字节
- Bitmap.Config.RGB_565:
- 5+6+6=16,16位RGB图,也就是每个像素占2个字节
- Bitmap.Config.ARGB_4444:
- 4+4+4+4=16,16位ARGB图,也就是每个像素占2个字节
- Bitmap.Config.ARGB_8888:
- 8+8+8+8=32,32位ARGB图,也就是每个像素占4个字节
ARGB: A代表透明度;R代表红色;G代表绿色;B代表蓝色
假设有一张分辨率200*200的图片,根据Bitmap.Config的不同,其所占的内存分别为:
- Bitmap.Config.ALPHA_8:
- 200 * 200 * 1 = 40000 byte ~= 39.06 KB
- Bitmap.Config.RGB_565:
- 200 * 200 * 2 = 80000 byte ~= 78.13 KB
- Bitmap.Config.ARGB_4444:
- 200 * 200 * 2 = 80000 byte ~= 78.13 KB
- Bitmap.Config.ARGB_8888:
- 200 * 200 * 4 = 160000 byte ~= 156.25 KB
可以看出同一分辨率的图片,由于Bitmap.Config的不同,其所占内存差别相当大。