图片加载如何避免OOM
/ / 点击 /内存中Bitmap大小的计算公式:
长占用的像素 宽占用的像素 每个像素占用的内存
避免OOM也就是要减小图片在内存中的大小,有两种方式等比缩小长宽和减少每个像素占用的内存。
等比缩小长宽:
Bitmap的创建是通过BitmapFactory的工厂方法decodeFile()、decodeStream()、decodeByteArray()、decodeResource()。这些方法在创建Bitmap使都一个参数Options,Options中的属性inSampleSize用来对图片进行长宽的设置,inSampleSize的值是2的幂次方,通过设置合适的值来对图片进行缩放操作。减少像素内存:
Options中的属性inPreferredConfig,通过调整这个值的属性来改变每个像素所占的内存,默认值是ARGB_8888,修改为RGB_565或ARGB_4444可以减少一半的内存。
值 | 含义 |
---|---|
ARGB_8888 | A(Alpha)、R(Red)、G(Green)、B(Blue)各占8位的精度,加起来32位的精度(即4个字节),也就是一个像素占4个字节的长度 |
ARGB_4444 | A(Alpha)、R(Red)、G(Green)、B(Blue)各占4位的精度,加起来16位的精度(即2个字节),也就是一个像素占2个字节的长度 |
RGB_565 | R(Red)占5位精度、G(Green)占6位精度、B(Blue)占5位精度,一共16位精度,也就是2个字节,不携带透明度信息 |
ALPHA_8 | 每个像素占位(即一个字节),只办函透明度值,不携带颜色信息 |
全文完。