Android在调整图像大小时获取java.lang.OutOfMemoryError

时间:2017-11-29 22:03:21

标签: performance android-imageview android-image android-memory

我手机上运行正常。但是,当我检查实时崩溃数据时,人们正在获得内存不足错误。

java.lang.OutOfMemoryError

我试图从照片中加载图像并尝试缩小图像。

这是我的代码

requiredSize是1000

 public static Bitmap getImage(Context c, Uri uri, final int requiredSize)
        throws FileNotFoundException {
    BitmapFactory.Options o = new BitmapFactory.Options();
    o.inJustDecodeBounds = true;
    BitmapFactory.decodeStream(c.getContentResolver().openInputStream(uri), null, o);

    int width_tmp = o.outWidth
            , height_tmp = o.outHeight;
    int scale = 1;

    while(true) {
        if(width_tmp / 2 < requiredSize || height_tmp / 2 < requiredSize)
            break;
        width_tmp /= 2;
        height_tmp /= 2;
        scale *= 2;
    }

    BitmapFactory.Options o2 = new BitmapFactory.Options();
    o2.inSampleSize = scale;
    return BitmapFactory.decodeStream(c.getContentResolver().openInputStream(uri), null, o2); //This is the line that's getting the error
}

1 个答案:

答案 0 :(得分:0)

直接在imageview中加载高分辨率图像可能会导致UI滞后。为了避免这种情况,要进行任何类型的调整,我建议使用Picasso或Glide图像加载库,以便在图像加载时获得更好的性能。