我正在尝试使用Affinetransform.rotate(
) 和. 以 90 度增量旋转 32 x 64 png 图像AffinetransformOp.filter
。它适用于 0、90 和 180 度,但在 270 度时只显示了我的图像的一半。经过一些研究,我发现这是由于filter()
处理图像坐标的方式,但我不知道如何解决这个问题。我已经尝试过使用其他方法来旋转图像,但我宁愿使用这个。
旋转图像的方法:
public BufferedImage rotateImage(BufferedImage img, double angle) {
AffineTransform tx = new AffineTransform();
tx.rotate(angle, img.getWidth() - 16, img.getHeight() - 16);
AffineTransformOp op = new AffineTransformOp(tx,
AffineTransformOp.TYPE_BILINEAR);
return op.filter(img, null);
}
我也有一个截图来澄清我的问题:
编辑:我尝试filter()
通过添加以下代码手动创建目标图像,但无济于事。
int w, h;
if (angle == Math.PI / 2 || angle == 3 * Math.PI / 2) {
w = img.getHeight();
h = img.getWidth();
} else {
w = img.getWidth();
h = img.getHeight();
}
BufferedImage dest = new BufferedImage(w, h, img.getType());
return op.filter(img, dest);