2004/12/14

今日の Java

このエントリーをはてなブックマークに追加

画像の拡大、縮小

LG3D でテクスチャを扱うようになってから、画像の拡大や縮小をよく行うようになりました。

画像ビューアーでパフォーマンスが悪いので、どこがボトルネックになるか調べてみたのですが... 当初はテクスチャ生成だろうと予想していたのですが、実際は画像の拡大/縮小の部分だったのです。

このアプリでは AffineTransferOp クラスを使用していたのですが、この処理時間が意外にも長いのです。そこで、Graphics#drawImage(Image image, int x, int y, int width, int height, ImageObserver observer) メソッドを使用するようにしたら見違えるほど早くなりました。

画像の拡大/縮小を行うには

  1. AffineTransfer + Graphics2D#drawRenderedImage or drawImage
  2. Graphics#drawImage(Image image, int x, int y, int width, int height, ImageObserver observer)
  3. BufferedImage + AffineTransferOp
  4. Raster + AffineTransferOp
  5. JAI

ぐらいが考えつきます。これでどのくらい速度が違うかは次回以降に。

0 件のコメント: