从URL加载图像到位图时的OutOfMemory

时间:2011-06-03 07:11:45

标签: android

我从网址加载图片。它没关系,但是当很长时间它出现错误时:位图大小超过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;
    }
请帮助我!!

4 个答案:

答案 0 :(得分:2)

尝试使用BitmapFactory.Options的sampleSize,这会减少图片内存的大小(以及质量)

但如果你的形象真的太大了,我认为没有奇迹解决方案,图像太大了......

答案 1 :(得分:1)

您的问题正是错误消息中所述:您的图片太大而无法加载到内存中。

答案 2 :(得分:0)

尝试使用任何其他图片。由于此图像超出了文件夹的大小。

您是否使用模拟器进行测试?

答案 3 :(得分:0)

只是一个想法,可能是这段代码有时会抛出异常。这将导致InputStream不会释放已签名的资源(内存泄漏)。

如果您关闭最终区域中的输入流,则应解决此问题