0

2 つの方法を使用して、アプリケーションに 2m を超えるサイズの画像をロードすることをテストします。

private void loadImages() {
        long currentTime=System.currentTimeMillis();
        MediaTracker mediaTracker = new MediaTracker(this);
        images = new HashMap<String, Image>();
        for (Iterator iterator = model.getAllImages().iterator(); iterator
                .hasNext(); mediaTracker.addImage(tempImage, 0)) {
            String filename = (String) iterator.next();
            try{
            tempImage=ImageIO.read(Game.class.getResourceAsStream(filename));
            }catch(Exception e){

        }
            //URL imageURL = getClass().getResource(filename);
        //  tempImage = getImage(getCodeBase(), imageURL.toString());
            images.put(filename, tempImage);
        }

        try {
            mediaTracker.waitForID(0);
        } catch (InterruptedException interruptedexception) {
        }
        System.err.println(System.currentTimeMillis()-currentTime);
    }

私のテスト結果は、ImageIO.read()が よりも 2 倍遅いことを示していgetImage()ます。誰か説明してくれませんか? お返事お待ちしております。

4

1 に答える 1

1

2 つの機能は 2 つの異なる方法で機能すると言えます。

ImageIOは、すぐにペイントできる画像を返すことが保証されていますgetImage。as は、将来のある時点でロードされる可能性のある画像への参照を返します。したがって、必要なペイント メソッドが表示される理由ImageObserver

BufferedImageこれにより、との違いの多くが説明されImageます。 BufferedImageピクセルやカラーモデルデータなどに直接アクセスできます

于 2012-09-26T10:53:37.947 に答える