Я думаю, вам нужно «вернуться» к вашему масштабному коэффициенту, определив, какой масштаб увеличит ваш рост до 300 пикселей и вашу ширину до 100.Это не будет масштабироваться равномерно.Для этого вам нужно использовать одинаковую шкалу для х и у.Поэтому, если вы пытаетесь убедиться, что ваше изображение помещается на экране / дисплее / странице, вы выбрали бы самый широкий масштаб измерения.так что используйте приведенный выше пример ...
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
Это всего лишь предложение, надеюсь, оно поможет.