画像の拡大、縮小 3
前回は Graphics#drawImage メソッドでしたが、今日は Graphics2D#drawImage メソッドです。Graphics2D クラスの drawImage メソッドは引数に AffineTransform オブジェクトを使用します。
同様な処理を行うメソッドに drawRenderableImage メソッドと drawRenderedImage メソッドがあります。
前回のサンプルと拡大・縮小の以外の部分は同じなので、違うところだけ示します。ダウンロードはこちらから。
public BufferedImage rescale(BufferedImage org, int width, int height) { BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); double sx = (double)width / (double)org.getWidth(); double sy = (double)height / (double)org.getHeight(); AffineTransform trans = AffineTransform.getScaleInstance(sx, sy); Graphics2D g = (Graphics2D)image.getGraphics(); g.drawImage(org, trans, null); g.dispose(); return image; }AffineTransform オブジェクトは new で生成することもできますが、アフィン変換の行列を使わなくてはいけないので、簡単に使えるファクトリメソッドを使用して生成しました。
後は drawImage メソッドの引数に AffineTransform オブジェクトを指定するだけです。
前回と同じ画像を使用して 150x100 に縮小してみるとだいたい同じぐらいの時間で拡大/縮小できるようです。
2004/12/26
今日の Java
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿