android之图片内存溢出

下面是我转抄自大牛的~~~~具体哪位大牛我也不清楚

为了修改内存不足的问题你应该像下边这样做:

BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap preview_bitmap=BitmapFactory.decodeStream(is,null,options);

inSampleSize这个选项可以减少内存消耗。
这是一个彻底的解决方法。首先,它读取这个文件的大小,但是不用解码这个目录本身。然后,它发现最好的inSampleSize值,它需要大量的2.最后这个图片就可以被解码了。

//解码图片然后对图片进行缩放以减少内存消耗
private Bitmap decodeFile(File f){
    try {
        //解码图片大小
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;
        BitmapFactory.decodeStream(new FileInputStream(f),null,o);

        //我们想要的新的图片大小
        final int REQUIRED_SIZE=70;
        int scale=1;
        while(o.outWidth/scale/2>=REQUIRED_SIZE && o.outHeight/scale/2>=REQUIRED_SIZE)
            scale*=2;

        //用inSampleSize解码
        BitmapFactory.Options o2 = new BitmapFactory.Options();
        o2.inSampleSize=scale;
        return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
    } catch (FileNotFoundException e) {}
    return null;
}

谢谢大牛了。

原文地址:https://www.cnblogs.com/fanglove/p/2873675.html