Я хочу масштабировать файл Android URI - PullRequest
0 голосов
/ 08 ноября 2019

Прошу прощения за мой уровень английского. Я хочу масштабировать файл Android URI в галерее. Я могу сделать с decodeSampledBitmapFromResource. Но это хочет ResID. У меня есть доступный путь к файлу. Как я могу сделать масштабированное изображение и хранилище или Есть ли другой метод? Когда я загружаю пользовательские фотографии, я хочу сохранить данные и сохранить скорость.

static Bitmap decodeSampledBitmapFromResource(Resources _Resources, int resID, int reqWidth, int reqHeight) {
    final BitmapFactory.Options _Options = new BitmapFactory.Options();
    _Options.inJustDecodeBounds = true;
    BitmapFactory.decodeResource(_Resources, resID, _Options);
    _Options.inSampleSize = calculateInSampleSize(_Options, reqWidth, reqHeight);
    _Options.inJustDecodeBounds = false;
    return BitmapFactory.decodeResource(_Resources, resID, _Options);
}

1 Ответ

0 голосов
/ 09 ноября 2019

Если у вас есть URI контента, вы можете использовать ContentResolver, чтобы открыть входной поток, и BitmapFactory.decodeStream, чтобы прочитать растровое изображение. Эквивалент здесь должен быть:

static Bitmap decodeSampledBitmapFromURI(Uri imageUri, int reqWidth, int reqHeight) {
    final BitmapFactory.Options _Options = new BitmapFactory.Options();
    _Options.inJustDecodeBounds = true;

    InputStream inputStream = getContentResolver().openInputStream(imageUri);
    BitmapFactory.decodeStream(inputStream, null, _Options);

    _Options.inSampleSize = calculateInSampleSize(_Options, reqWidth, reqHeight);
    _Options.inJustDecodeBounds = false;

    // Note that we need to open the input stream again here
    inputStream = getContentResolver().openInputStream(imageUri);
    return BitmapFactory.decodeStream(inputStream, null, _Options);
}
...