我不懂Image类!我在这做错了什么?

时间:2012-04-23 21:36:15

标签: java image

这里有一个新手,但这是一个小的测试代码,解释了我的问题。打印的值为-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());
        }
    }

2 个答案:

答案 0 :(得分:5)

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

使用ImageIOBufferedImage而不是getWidth()getHeight()而不是ImageObserver参数(尽管其他的也可以使用null通过BufferedImage image = ImageIO.read("/*image*/"); int width = image.getWidth(); ):

{{1}}

答案 1 :(得分: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]));
    }
}