1

我知道做简单的缩放,但是如何将图像缩放到最大 300*100 像素?我搜索了 AffineTransform API 类,但找不到此方法。

提前谢谢

4

2 回答 2

1

根据相对于目标宽度/高度的图像宽度/高度计算变换因子。

编写一些代码,如果遇到问题,请提出具体问题。

于 2011-03-31T17:40:06.427 回答
1

我认为您需要通过计算将您的高度变为 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

不过这只是一个建议,希望对你有所帮助。

于 2011-03-31T18:06:17.363 回答