阅读图像宽度和高度非常奇怪的问题(Java)

时间:2011-05-28 09:08:35

标签: java image swing width awt

我正在制作一个返回图像的宽度高度的方法。 这是一个普通的32x32图标。这是我到目前为止所做的:

    Image icon;
    String filename = "G:\\icon.jpg";

    int iconWidth = 0;
    int iconHeight = 0;

    icon = Toolkit.getDefaultToolkit().getImage(filename);
    iconWidth  = icon.getWidth(null);
    iconHeight = icon.getHeight(null);
    System.out.println(iconWidth);

    JFrame window = new JFrame();

    icon = Toolkit.getDefaultToolkit().getImage(filename);
    iconWidth  = icon.getWidth(null);
    iconHeight = icon.getHeight(null);
    System.out.println(iconWidth);

代码输出

  -1
  32

32是图像的正确宽度。但为什么它首先返回-1?代码完全一样。删除“JFrame”行使其返回两个-1。 JFrame可能会影响默认工具包吗?

我也试过这段代码:

        JFrame window = new JFrame();
        icon = Toolkit.getDefaultToolkit().getImage(filename);
        iconWidth  = icon.getWidth(null);
        iconHeight = icon.getHeight(null);
        System.out.println(iconWidth);

它也返回-1。我根本无法理解为什么我要调用它两次以获得正确的结果。

1 个答案:

答案 0 :(得分:4)

来自getWidth的文档:

  

确定图像的宽度。如果宽度尚不知道,则此方法返回-1,稍后会通知指定的ImageObserver对象。

所以也许图像仍然是异步加载的。尝试使用ImageObserver,以便在信息可用时通知您。