2

我正在寻找 javax.imageio 包的一个很好的替代方案,它可以让我对图像进行简单的旋转、剪切和缩放操作。例如,我想做

int angle, height, width;
image.rotateRight(angle).scale(height, width);

为了获得向右旋转角度度并缩小到x像素的图像。

使用 Graphics2D 和 BufferedImages,我将不得不这样做,这既不可读,也不容易编写:

BufferedImage result = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = result.createGraphics();
graphics.translate(height/2, width/2);
graphics.rotate(angle);
graphics.translate(-width/2, -height/2);
graphics.drawImage(image, 0, 0, width, height, null);

(实际上,该代码甚至没有考虑非方形图像,这将需要我在翻译中做更多的魔法)。

4

2 回答 2

5

Java Advanced Imaging API包含有用的东西,比如RotatorDescriptor

但我承认我发现你上面的例子很可读,所以我不确定你会得到更多你喜欢的东西:-)

于 2009-04-21T15:46:51.307 回答
3

我同意 Brian 的观点:JAI 对你来说是一个非常好的选择。您可能需要编写一些委托对象来获得所需的可读代码并使用它而不是 JAI API。

您也可以使用处理 ( http://processing.org )。它的 API 比 JAI API 更简单。由于使用处理,默认情况下您将获得更好的缩放和旋转操作质量。

于 2009-04-21T16:35:42.453 回答