3

这里是一个新手,但这是一个解释我的问题的小测试代码。打印的值为 -1。我对如何返回图像的像素宽度一无所知,我在这里遗漏了一些非常明显的东西吗?这整个 ImageObserver 东西毫无意义!!!

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;



    class imagetest2 extends JPanel {
        Image i =Toolkit.getDefaultToolkit().getImage(/*image*/);

        public int test(){
            int x = i.getWidth(null);
            return x;
        }


    }

    class imagetest {
        public static void main(String args[]){
            imagetest2 tesst = new imagetest2();
            System.out.print(tesst.test());
        }
    }
4

2 回答 2

5

Toolkit.getDefaultToolkit().getImage()可能会异步加载几乎永远不是您想要的图像。

使用ImageIOand aBufferedImage代替,它也有getWidth()getHeight()没有ImageObserver参数(尽管如果你通过其他参数也可以工作null):

BufferedImage image = ImageIO.read("/*image*/");
int width = image.getWidth();
于 2012-04-23T21:39:24.317 回答
0

您只是使用了错误的类。有一种更简单的方法可以实现您想要的,这将做到:

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.File;
import javax.imageio.ImageIO;

class ImageTest 
{
    BufferedImage img;

    public static int getWidthFromImage(String filename)
    {
        BufferedImage image;
        int width;
        try
        {
            image = ImageIO.read(new File(filename));
            return image.getWidth();
        }
        catch(IOException e)
        {
            System.out.println("Something terrible happened! " + e.getMessage());
            e.printStackTrace();
        }
        return -1;
    }
    public static void main(String args[])
    {
        System.out.print("The width of the image in pixels is: " + getWidthFromImage(args[0]));
    }
}
于 2012-04-23T22:06:22.457 回答