我正在寻找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);
(实际上,该代码甚至不考虑非方形图像,这将要求我在翻译时做更多魔术。)
答案 0 :(得分:5)
Java Advanced Imaging API包含有用的内容,例如RotatorDescriptor。
但我承认我发现上面的例子很可读,所以我不确定你会得到更多你想要的东西: - )
答案 1 :(得分:3)
我同意Brian的观点:JAI对你来说是个不错的选择。您可能需要编写一些委托对象来获取所需的可读代码,并使用它代替JAI API。
您也可以使用处理(http://processing.org)。它的API比JAI API简单。使用Processing的结果是,默认情况下,缩放和旋转操作的质量会更高。