java - 图像 getWidth 和 getHeight 不恰本地返回 -1

标签 java

为什么会这样:

URL url = MinecraftPlatformGame.class.getResource("images/diamondPick.png");
image = Toolkit.getDefaultToolkit().getImage(url); 
int width = image.getWidth(null);
int height = image.getHeight(null);
System.out.println(width);
System.out.println(height);

宽度高度均返回-1

编辑:在我找到答案之前,我的问题实际上是我应该如何修复它。 我通过执行以下操作修复了它:

URL url = MinecraftPlatformGame.class.getResource("images/diamondPick.png");
image = Toolkit.getDefaultToolkit().getImage(url); 
MediaTracker mTracker = new MediaTracker(this);
  mTracker.addImage(image,1);
        try {
            mTracker.waitForID(1);
        } catch (InterruptedException ex) {
            Logger.getLogger(MinecraftPlatformGame.class.getName()).log(Level.SEVERE, null, ex);
        }
int width = image.getWidth(null);
int height = image.getHeight(null);
System.out.println(width);
System.out.println(height);

url = MinecraftPlatformGame.class.getResource("images/gui.png");
image1 = Toolkit.getDefaultToolkit().getImage(url);
  mTracker.addImage(image1,2);
        try {
            mTracker.waitForID(2);
        } catch (InterruptedException ex) {
            Logger.getLogger(MinecraftPlatformGame.class.getName()).log(Level.SEVERE, null, ex);
        }
        width = image1.getWidth(null);
height = image1.getHeight(null);
System.out.println(width);
System.out.println(height);

我现在遇到的问题是,这似乎不是很有效,而且我似乎也不需要那么多代码来导入两个图像并指定大小。有没有更好、更高效、更简单的方法来做到这一点?

最佳答案

根据 Javadoc:

If the width is not yet known, this method returns -1 and the specified ImageObserver object is notified later.

为了响应您的编辑,并根据 Russell 的评论,使用 ImageIO.read() 来获取完全加载的图像。

关于java - 图像 getWidth 和 getHeight 不恰本地返回 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8766477/

相关文章:

java - 从非 Activity 状态启动对话框

java - "T extends Junk"在 Java 的泛型类中意味着什么?

java - JScrollpane 滚动条不显示

java - 解决 isPlaying() 上的 Android MediaPlayer 状态不匹配错误的方法?

java - 使用@JsonTypeInfo和@JsonSubTypes,反序列化没有基类和类型信息的具体子类的对象

Java着色字符GUI

java - 使用线程同步的序列号

java - Spring @Transactional 继承规则

java - 如何在 Swing 中显示打印进度对话框?

java - 如果其中一个调度程序需要更多时间来运行,Spring Boot 应用程序调度程序将无法工作