下面是我转抄自大牛的~~~~具体哪位大牛我也不清楚
为了修改内存不足的问题你应该像下边这样做:
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; }
谢谢大牛了。