关于在java中加载图片的功能的速度

时间:2012-09-26 10:44:17

标签: java

我测试使用两种方法在我的应用程序中加载超过2米大小的图片。

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()getImage()慢两倍。有人可以解释一下原因吗?等你回复。

1 个答案:

答案 0 :(得分:1)

我想说两个函数以两种不同的方式工作。

ImageIO保证会返回一个可以立即绘制的图像,其中getImage会返回对可能在未来某个时间加载的图像的引用,因此你看到需要ImageObserver

的绘画方法的原因

这可以解释BufferedImageImage之间的差异。 BufferedImage允许您直接访问像素和颜色模型数据

等内容