API Java-AffineTransform: масштабировать изображение до 300 * 100 пикселей с помощью?

Я знаю, как сделать простое масштабирование, но как я могу масштабировать изображение максимум до 300 * 100 пикселей? я искал класс API AffineTransform, но не смог найти для этого метод.

спасибо заранее


person user576914    schedule 31.03.2011    source источник


Ответы (2)


Я думаю, вам нужно будет «вернуться» к вашему коэффициенту масштабирования, определив, какой масштаб приведет к увеличению вашей высоты до 300 пикселей и ширины до 100.

Что-то типа

double xScale = 100/image.getWidth();
double yScale = 300/image.getHeight();

AffineTransform transform = new AffineTransform();
transform.setToScale( xScale, yScale );
//paint code goes here

Однако это не будет масштабировать его равномерно. Для этого вам нужно использовать одинаковую шкалу для x и y. Поэтому, если вы пытаетесь убедиться, что ваше изображение помещается на экране/дисплее/странице, вы должны использовать масштаб самого широкого измерения. поэтому, чтобы использовать приведенный выше пример...

double xScale = 100/image.getWidth();
double yScale = 300/image.getHeight();
double theScale = xScale > yScale ? xScale : yScale;

AffineTransform transform = new AffineTransform();
transform.setToScale( theScale , theScale );
//paint code goes here

Это всего лишь предложение, надеюсь, оно поможет.

person Heath Lilley    schedule 31.03.2011
comment
Большое спасибо ... я также использовал AffineTransformOp для фильтрации изображения .. thx - person user576914; 01.04.2011

Рассчитайте коэффициенты преобразования на основе ширины/высоты изображения относительно целевой ширины/высоты.

Напишите немного кода, и если вы столкнетесь с проблемой, задайте конкретный вопрос.

person Andrew Thompson    schedule 31.03.2011