Posted by terai at 2010-01-11
AffineTransformOpで画像を反転する
AffineTransformOpなどを使って、画像の上下反転、左右反転を行います。
サンプルコード
int w = bi.getWidth(this); int h = bi.getHeight(this); AffineTransform at = AffineTransform.getScaleInstance(-1.0, 1.0); at.translate(-w, 0); AffineTransformOp atOp = new AffineTransformOp(at, null); g.drawImage(atOp.filter(bi, null), 0, 0, w, h, this);
解説
上記のサンプルでは、AffineTransformOp#filter(...)メソッドで左右反転したBufferedImageを生成しています。
以下のような方法で上下反転することもできます。
AffineTransform at = AffineTransform.getScaleInstance(1.0, -1.0); at.translate(0, -h); g2.drawImage(bi, at, this);