那里有javax.imageio的好替代品吗?

时间:2009-04-21 15:39:15

标签: java javax.imageio

我正在寻找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);

(实际上,该代码甚至不考虑非方形图像,这将要求我在翻译时做更多魔术。)

2 个答案:

答案 0 :(得分:5)

Java Advanced Imaging API包含有用的内容,例如RotatorDescriptor

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

答案 1 :(得分:3)

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

您也可以使用处理(http://processing.org)。它的API比JAI API简单。使用Processing的结果是,默认情况下,缩放和旋转操作的质量会更高。