当前位置:首页 > android 显示图片时报错:java.lang.OutOfMemoryError

android 显示图片时报错:java.lang.OutOfMemoryError

点击次数:2339  更新日期:2013-11-17

android 显示图片时报错:java.lang.OutOfMemoryError

at android.graphics.BitmapFactory.nativeDecodeStream


这是之前使用的方法:

InputStream is = conn.getInputStream();

mBitmap = BitmapFactory.decodeStream(is);


出现错误的原因是bitmap图片尺寸较大,使用后超过预算的VM

解决方法为加上下面两句,使用图片的缩略图

InputStream is = conn.getInputStream();

BitmapFactory.Options options=new BitmapFactory.Options();

options.inSampleSize = 2;

mBitmap = BitmapFactory.decodeStream(is,null,options);


设置inSampleSize 的意义:

如果设置为值>1,请解码器subsample原始图像,返回较小的图像,以节省内存。样本大小是任一维度中对应的解码位图中单个像素的像素的数目。例如,inSampleSize= =4返回一个1/4 的图像的宽度高度的原始和1/16的像素数。任何值< =1是同样视为1。注:解码器将尝试满足这一要求,但所生成位图可能有不同的维度正是已请求的。此外,2 的权力往往更快/更容易的解码器来纪念。