Java: Как изменить размер буферизованного изображения в пикселях?

Мне нужно изменить размер исходного буферизованного изображения до ширины 100 пикселей с сохранением соотношения ширина / высота. Ниже приведен код, который я использую. Может ли кто-нибудь помочь мне с этим? Заранее спасибо.

int width = 100;
int height = 100;

BufferedImage resizedImage = new BufferedImage(width, height, type);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, width, height, null);
g.dispose();

3 ответа

Решение
int imageWidth = originalImage.getWidth();
int imageHeight = originalImage.getHeight();
height = imageHeight * width / imageWidth;
// Integer arithmetic doing lossless division last.

Однако высота теперь может быть меньше или больше 100.

Возможно, вы захотите взглянуть на imgscalr, это простой отдельный класс, который делает именно это с помощью простого набора статических методов: http://www.thebuzzmedia.com/software/imgscalr-java-image-scaling-library/

Пример использования будет выглядеть так:

BufferedImage img = Scalr.resize(src, 100);

Существует ряд расширенных функций, касающихся качества, скорости и простых операций с изображениями, доступных вам, а также, если они вам нужны, и библиотека была развернута в производстве во многих проектах и ​​веб-приложениях.

Хорошо, вы можете попробовать

int width = 100;
int height = 100;
height = originalImage.height() / (originalImage.width()/width)
Другие вопросы по тегам