Java 使用裁剪旋转图像

Java 使用裁剪旋转图像,java,rotation,transform,Java,Rotation,Transform,我有一张软裁剪的照片 i、 e 图像边界为宽度3和高度5。 在图像中,我在(x,y)1,4处有一个软裁剪,边界宽度为1,高度为1 在将图像旋转90度后,如何获得裁剪的新位置(x,y) 也许是仿射翻译?是的,你可以使用仿射翻译 您可以使用AffineTransform.getRotateInstance和AffineTransform#transform(Point2D,Point2D) 像这样使用它: AffineTransform transform = AffineTransform.get

我有一张软裁剪的照片

i、 e 图像边界为宽度3和高度5。 在图像中,我在(x,y)1,4处有一个软裁剪,边界宽度为1,高度为1

在将图像旋转90度后,如何获得裁剪的新位置(x,y)


也许是仿射翻译?

是的,你可以使用仿射翻译

您可以使用AffineTransform.getRotateInstance和AffineTransform#transform(Point2D,Point2D)

像这样使用它:

AffineTransform transform = AffineTransform.getRotateInstance(Math.PI / 2.0, width / 2.0, height / 2.0);
Point2D.Double point = new Point2D.Double(1, 4);
Point2D.Double result = new Point2D.Double();
transform.transform(point, result);

请注意,旋转后,软裁剪区域的左上角点不再是左上角点,而是左下角点。

在上述代码中确实犯了两个错误。在宽度和高度前面有减号,并且使用了Math.PI而不是Math.PI/2.0。现在已更正,因此如果您已尝试此操作,则可以再次执行。