Affinetransform.rotate(
) とを使用して、32 x 64 の png 画像を 90 度単位で回転させようとしています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);