Если все, что требуется, это изменить размер BufferedImage
в методе resize
, то библиотека Thumbnailator может сделать это довольно легко:
public static BufferedImage resize(BufferedImage img, int newW, int newH) {
return Thumbnails.of(img).size(newW, newH).asBufferedImage();
}
Приведенный выше код изменит размер img
для соответствия размерам newW
и newH
при сохранении соотношения сторон исходного изображения.
Если поддержание соотношения сторон не требуется и требуется изменение размера до заданных размеров, вместо метода size
можно использовать метод forceSize
:
public static BufferedImage resize(BufferedImage img, int newW, int newH) {
return Thumbnails.of(img).forceSize(newW, newH).asBufferedImage();
}
Использование метода Image.getScaledInstance
не гарантирует сохранения соотношения сторон исходного изображения для изображения с измененным размером, и, кроме того, оно обычно очень медленное.
Thumbnailator использует метод постепенного изменения размера изображения, который может быть в в несколько раз быстрее, чем Image.getScaledInstance
при достижении качества изображения, которое обычно сопоставимо.
Отказ от ответственности: я хранитель этой библиотеки.