Android Как масштабировать изображение с помощью параметров BitmapFactory
Я хочу декодировать изображение с SD-карты с помощью BitmapFactory.decodeFile(путь, параметры).
Я также хочу, чтобы изображения размером больше 2048x2048 пикселей были уменьшены до 2048x2048 (сохраняя пропорции).
Я мог бы сделать это вручную после получения растрового изображения, но для этого потребуется выделить большое количество байтов в дополнение к уже выделенным.
Как настроить BitmapFactory.Объект Options, чтобы получить, что эффект?
Спасибо
3 ответов
использовать BitmapFactory.Опции.inSampleSize при первой загрузке изображения, чтобы получить размер как можно ближе к целевому размеру, а затем использовать Bitmap.createScaledBitmap
для масштабирования до нужного размера.
для этого есть код в ответ.
начните с установки inJustDecodeBounds
до true
в своем Options
, это даст вам размер изображения, без загрузки каких-либо данных изображения.
Если размер изображения меньше вашего максимального размера, просто загрузите его как обычно.
Если, с другой стороны, он слишком большой, используйте inSampleSize
читать меньше растровых.
Примечание: я не думаю, что декодирование делает фильтрацию при использовании inSampleSize, поэтому вы можете потерять некоторые детали, но как размер изображения очень большой (2048 пикселей) я не думаю, что это вызовет какие-либо проблемы.
вы можете попробовать что-то вроде этого:
int imageWidth, imageHeight;
Bitmap result = Bitmap.createScaledBitmap(bitmapPicture,
imageWidth, imageHeight, false);
здесь вы можете добавить свою собственную ширину и высоту. bitmapPicture
объект Bitmap
.
Дайте мне знать, если это поможет.