添加纹理会降低我的应用程序速度

时间:2014-05-17 20:09:08

标签: java image bufferedimage image-scaling

我使用bufferedImage在我的资源文件夹中加载纹理,如下所示:

我使用ImageLoader类加载图片

...
public static final BufferedImage images = loadImages("/images/images.jpg");
 private static BufferedImage loadImages(String string) {
    BufferedImage image = null;
    try {
        image = ImageIO.read(ImageLoader.class.getResourceAsStream(string));
    } catch (Exception e) {
        e.printStackTrace();
    }
    return image;
 }

但是当我将其添加到我的一个对象中时:

 ...
graphic.drawImage(ImageLoader.images.getScaledInstance(200,200.java.awt.Image.SCALE_SMOOTH), (int) objects.get(i).getX() - objects.get(i).getWidth() / 2, (int) objects.get(i).getY()
- objects.get(i).getHeight() / 2, objects.get(i).getWidth(),objects.get(i).getHeight(), null);

它减慢了 很多我的应用 ,有一种方法可以更有效地加载图像,而且更有意义, 有没有办法防止应用程序放缓?

1 个答案:

答案 0 :(得分:3)

将缩放图像列表作为字段。当然,使用变量会更好:

// Field
List<Image> images = new ArrayList<>();

// Once, maybe in the constructor
... object = objects.get(i);
images.add(...);

然后只在绘画方法

graphic.drawImage(images.get(i), ...);