我从网址加载图片。它没关系,但是当很长时间它出现错误时:位图大小超过vm预算。这是我的代码
BitmapFactory.Options bmOptions;
bmOptions = new BitmapFactory.Options();
bmOptions.inJustDecodeBounds = true;
//from web
try {
Bitmap bitmap=null;
InputStream is=new URL(url).openStream();
BitmapFactory.decodeStream(is, null, bmOptions);
is.close();
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = 1;
is = new URL(url).openStream();
bitmap = BitmapFactory.decodeStream(is, null, o2);
is.close();
return bitmap;
} catch (Exception ex){
ex.printStackTrace();
return null;
}
请帮助我!!
答案 0 :(得分:2)
尝试使用BitmapFactory.Options的sampleSize,这会减少图片内存的大小(以及质量)
但如果你的形象真的太大了,我认为没有奇迹解决方案,图像太大了......
答案 1 :(得分:1)
您的问题正是错误消息中所述:您的图片太大而无法加载到内存中。
答案 2 :(得分:0)
尝试使用任何其他图片。由于此图像超出了文件夹的大小。
您是否使用模拟器进行测试?
答案 3 :(得分:0)
只是一个想法,可能是这段代码有时会抛出异常。这将导致InputStream不会释放已签名的资源(内存泄漏)。
如果您关闭最终区域中的输入流,则应解决此问题