java - java加载图片函数的速度

标签 java

我测试使用两种方法在我的应用程序中加载超过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()getImage()慢两倍。有人能解释一下为什么吗?等待您的回复。

最佳答案

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

ImageIO 保证返回一个可以立即绘制的图像,而 getImage 将返回您对可能在某个时间加载的可能图像的引用将来,这就是您看到需要 ImageObserver

的绘制方法的原因

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

关于java - java加载图片函数的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12599951/

相关文章:

java - 将语句转换为准备语句java

java - 使用java应用程序自动打开文件

java - Collat​​or Locale German - 如何仅在正常字母之后对重音字母进行排序

java - 将 Action 监听器连接到单选按钮时遇到问题

java - inputStream null 延迟 Kotlin

java - 如何知道哪个 JSP 网页正在显示我的 servlet

java - 从类名创建类实例

java - 自定义 LineMapper 在 Spring Batch 多文件处理中抛出异常

java - apache-commons-dbutils 可以将 beans 转换为 SQL 语句吗?

java - 为倒计时添加声音