最有效的设置图像的方法

时间:2013-11-24 03:00:49

标签: java image performance processing-efficiency memory-efficient

必须有一些更有效的方法来设置图像不存在吗?或者这是好事吗?

     public Image setImage(String img){
        ImageIcon imageIcon = new ImageIcon(setURL("Images/" + img));
        Image image;
          image = imageIcon.getImage();
          //imgWidthTemp = image.getWidth(null);
          //imgHeightTemp = image.getHeight(null);
          return image; 
     }

    public URL setURL(String url){
       String Url = url;
       try{
        URL imgURL = getClass().getClassLoader().getResource(url);
        if(imgURL != null){
           return imgURL;
        }
       }catch(NullPointerException e){}
         return null;
     }

我真的不需要setURL()方法,只是让事情变得更清晰,更容易处理。我只是想知道是否有更有效的方法来设置自定义图像(如果有的话)。即使没有这两种方法,仍然需要编写很多代码。它变得更简单了吗?我的意思是为什么我们不能只创建一个新图片,而不是首先制作ImageIcon然后说Image myImage = ImageIcon.getImage()。没有抱怨,但如果你有2000多张图片可以设置,那么如果没有一两种方法,那将会是很多代码(以我的世界为例?如果我自己这样说,那就是很多图像)。而电子游戏大多只有大量的图像而不是代码有时仅占代码的30%。

1 个答案:

答案 0 :(得分:1)

目前还不清楚你在这里想要做什么,但是Java Tutorial有一个关于处理包含loading images上的材料的图像的部分。阅读它以获取显示建议方法的代码。

我不是这方面的专家,但我希望本教程推荐的直接方法比使用ImageIcon的间接方法更快。 (但我没有对它进行基准测试!!)


您的代码还有其他问题。特别是,setUrl方法很奇怪。

  • 名称setUrl用词不当。该方法不是“设置”任何东西。相反,它正在尝试将路径名映射到资源URL。

  • 不需要try-catch。该代码中的任何内容都不应该投掷NPE。

  • 如果删除不必要的try-catch,那么逻辑归结为:

        URL imgURL = getClass().getClassLoader().getResource(url);
        if (imgURL != null) {
           return imgURL;
        } else {
           return null;
        }
    

    这是疯狂/愚蠢的东西!就这样做:

        return getClass().getClassLoader().getResource(url);
    

最后,有一点很重要,您需要了解实际优化。

众所周知,人们对程序是快还是慢的直觉,以及使它快或慢的原因......都很差。不要依赖你的直觉(即猜测问题是什么,或将会是什么),最好做以下事情:

  1. 让您的计划正常运作。
  2. 衡量完成任务的速度。这称为基准测试
  3. 问问自己是否足够快。如果是,那就不要浪费你的时间进行优化。
  4. 使用 profiler 查找代码中性能热点瓶颈的位置。
  5. 优化已被识别为瓶颈的代码部分。不要花时间优化不是瓶颈的代码,因为这种努力将被浪费。