如何使用Java中的AffineTransform将图像向右翻转?

时间:2015-05-05 00:11:54

标签: java bufferedimage affinetransform

我向左翻转功能(见下面的代码),但我似乎无法找到如何向右翻转。计算是否相似?

向左翻转:

{
    gb.drawImage(img, 0, 0, null);
    gb.dispose();

    AffineTransform tx = new AffineTransform();
    tx.translate(img.getHeight(null) / 2, img.getWidth(null) / 2);
    tx.rotate(Math.PI / 2);

    tx.translate(-img.getHeight(null) / 2, -img.getWidth(null) / 2);
    AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);

    buffImg = op.filter(buffImg, null);
 }

1 个答案:

答案 0 :(得分:0)

如果要向左或向右旋转90度的倍数,可以使用AffineTransform.getQuadrantRotateInstance(int)方法:

AffineTransform rotateLeft = AffineTransform.getQuadrantRotateInstance(1);
AffineTransform rotateRight = AffineTransform.getQuadrantRotateInstance(-1);

还有锚定版本:

AffineTransform rotateRightCentered = AffineTransform.getQuadrantRotateInstance(-1, centerX, centerY);

如果你喜欢使用弧度,是的,它是相似的。剩下90度是-(Math.PI / 2)