在android开发过程中图片的存储优化是非常常见,处理不好,时常会造成图片OOM。接下来分享一下我在开发过程中做的相应的处理,仅供各位参考,如有不足还请多多指教。
首先我们知道图片在app存在形式无非就是:file、stream流、bitmap!
一、接下来列出几个图片OOM的出现情况
1、在一个页面中一次性加载过多的图片
2、加载的图片过大
3、bitmap的错误使用
二、图片优化的处理方式:尺寸压缩、质量压缩、内存复用
在此我们先知道一张图片的大小=图片的宽x图片的高x一个像素所占的大小。
1、尺寸压缩
按照一定的比例减小图片的宽高从而减少单位尺寸的像素值,这样的话可以改变图片在内存中的大小。这种做法只是改变了图片在加载时内存中的大小,但是磁盘中图片的大小是没有发生变化的。
代码示例:
/**
* @param pathUrl 文件路径
* @return
*/
public Bitmap getBitmap(String pathUrl) {
// 配置压缩的参数
BitmapFactory.Options options = new BitmapFactory.Options();
// 开始读入图片,此时把options.inJustDecodeBounds 设为true,方便图片在不加载进内存的情况下获取图片的宽高
options.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeFile(pathUrl, options);//这个时候decode的bitmap为null
opti