Android, как масштабировать изображение с помощью параметров BitmapFactory

Я хочу декодировать изображение с SD-карты с помощью BitmapFactory.decodeFile (путь, параметры).
Я также хочу, чтобы изображения размером более 2048×2048 пикселей уменьшались до 2048×2048 (поддерживая пропорции).
Я мог бы сделать это вручную после получения растрового изображения, но для этого потребуется выделить большое количество байтов в дополнение к уже выделенным.
Как мне настроить объект BitmapFactory.Options, чтобы получить этот эффект?
благодаря

Solutions Collecting From Web of "Android, как масштабировать изображение с помощью параметров BitmapFactory"

Используйте BitmapFactory.Options.inSampleSize при первой загрузке изображения, чтобы получить размер как можно ближе к целевому размеру, а затем используйте Bitmap.createScaledBitmap для масштабирования до Bitmap.createScaledBitmap размера.

В этом ответе есть код.

Начните с установки inJustDecodeBounds в true в ваших Options , это даст вам размер изображения без загрузки каких-либо данных изображения.
Если размер изображения меньше, чем ваш максимальный размер, просто загрузите его, как обычно.
Если, с другой стороны, он слишком велик, используйте inSampleSize для чтения меньшего растрового изображения.

Примечание. Я не думаю, что декодирование делает какую-либо фильтрацию при использовании inSampleSize, поэтому вы можете потерять некоторые детали, но по мере того, как размер изображения такой большой (2048 пикселей), я не думаю, что это вызовет какие-либо проблемы.

Вы можете попробовать что-то вроде этого:

 int imageWidth, imageHeight; Bitmap result = Bitmap.createScaledBitmap(bitmapPicture, imageWidth, imageHeight, false); 

Здесь вы можете добавить свою собственную ширину и высоту. bitmapPicture – объект Bitmap . Дайте мне знать, если это вам поможет.