Как загрузить образец изображения из URI? - PullRequest
1 голос
/ 25 мая 2020

Мне нужно загрузить изображение с уменьшенным разрешением. Как мне это сделать?

Надоел следующий код:

public Bitmap decodeSampledBitmapFromUri(@NonNull Uri Uri, int reqWidth, int reqHeight) {

    // First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    try {

        InputStream is = getContentResolver().openInputStream(Uri);

        BitmapFactory.decodeStream(is, null, options);

        // Calculate inSampleSize
        options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);   // I can read width and height from options

        // Decode bitmap with inSampleSize set
        options.inJustDecodeBounds = false;

        return BitmapFactory.decodeStream(is, null, options);
    } catch (Exception ignored)
    {

    }
    return null;
}

И я даже вижу ширину и высоту загруженного изображения. Но BitmapFactory.decodeStream возвращает null, когда я превратил inJustDecodeBounds в false. Что не так?

Изображение выбрано пользователем из галереи. Все разрешения предоставлены.

1 Ответ

1 голос
/ 25 мая 2020

Ваш InputStream был закрыт первым decodeStream(). Откройте fre sh InputStream для использования со вторым decodeStream().

...