日期:2014-05-20  浏览次数:20583 次

如何获取图片的宽度?
Java code

public class Test {
    public static void main(String[] args) {
        Toolkit tk = Toolkit.getDefaultToolkit();
        Image image1 = tk.getImage("f:/TestDir/test.jpg");
        int width1 = image1.getWidth(null);
        System.out.println(width1);
    }
}



打印结果:-1

-------------------------------------------
Java code

public class Test2 {
    public static void main(String[] args) {
        Toolkit tk = Toolkit.getDefaultToolkit();
        Image image1 = tk.getImage("f:/TestDir/test.jpg");
        Image image2 = new ImageIcon("f:/TestDir/test.jpg").getImage();
        int width1 = image1.getWidth(null);
        System.out.println(width1);
        int width2 = image2.getWidth(null);
        System.out.println(width2);

    }
}


打印结果:161
  161


请高手解说下其中的原理,特别 是打印-1的原因。

------解决方案--------------------
第一次是因为你的图像可能还没有被完全load进来。
顺便说一下,推荐你使用ImageIO.read()来读取图片!
你可以使用MeadiaTracker来等图片完全加载以后再读它的属性值
http://blog.csdn.net/jia20003/article/details/7279667
------解决方案--------------------
BufferedImage image = ImageIO.read(路径);
image.getWidth()