プログラム悪戦苦闘日記

はてなダイアリーからの移行(遺物)

描画処理1 - 画像のロード

 前日の続き。アレだけでは分からないので、具体的な手順もTips的に書いておく。
 画像のロードの方法は4つあって

  1. java.awt.Toolkit
  2. javax.imageio (Image I/O)
  3. com.sun.image.codec.jpeg.JPEGImageDecoder
  4. Java Advanced Imaging API

3,4の方法は、標準JDK(という名前でいいのか?)にないのでNG。という訳で、
1. java.awt.Toolkit
 JDK1.0からある古典的方法。MediaTrackerとペアで使ってロードが終わるまで待つのが定石。

public class HogeApplet extends JApplet {
    Image image_;
    
    public void init() {
        try {
            image_ = Toolkit.getDefaultToolkit().createImage(new URL(getCodeBase() + "hoge.gif"));
            MediaTracker tracker = new MediaTracker(this);
            tracker.addImage(image_, 0);
            tracker.waitForID(0);
        }catch(Exception ex) {
            System.out.println(ex.toString());
        }
    }
}

2. javax.imageio (Image I/O)
 javax〜となっているので標準拡張とかよばれるやつ。名前からして画像用のパッケージなんでしょう。
JDK1.4から使えるようになったようです。

public class HogeApplet extends JApplet {
    BufferedImage image_;
    
    public void init() {
        try {
            image_ = ImageIO.read(new URL(getCodeBase() + "hoge.gif"));
        }catch(Exception ex) {
            System.out.println(ex.toString());
        }
    }
}

さて、肝心のロード時間なんですが、Java in the Box のページ
http://www5.airnet.ne.jp/sakuraba/java/laboratory/graphics/ImageLoading/ImageLoading.html
にあったサンプルを自分の環境で動かしてみると、圧倒的にjava.awt.Toolkitの方が速かったでした。
ちなみにこのサイトにあった計測時間では同じくらいなんですけどね、なんででしょう。

この内用は上記のJava in the Boxのサイトを参考にしました。