在没有ImageObserver的情况下在Java中获取图像的高度和宽度

我试图在没有ImageObserver的情况下在Java中获取图像的heightwidth (通过URL)。 我目前的代码是:

 public static void main(String[] args) throws IOException { // TODO Auto-generated method stub File xmlImages = new File("C:\\images.xml"); BufferedReader br = new BufferedReader(new FileReader(xmlImages)); File output = new File("C:\\images.csv"); BufferedWriter bw = new BufferedWriter(new FileWriter(output)); StringBuffer sb = new StringBuffer(); String line = null; String newline = System.getProperty("line.separator"); while((line = br.readLine()) != null){ if(line.contains("http")){ URL url = new URL(line.) Image img = Toolkit.getDefaultToolkit().getImage(url); sb.append(line + ","+ img.getHeight(null) + "," + img.getWidth(Null) + newline); } } br.close(); bw.write(sb.toString()); bw.close(); } 

当我进入调试模式时,我能够看到图像已加载,我可以看到图像的heightwidth ,但我似乎无法返回它们。 getHeight()getWidth()方法需要一个我没有的Image Observer。 先谢谢你。

您可以使用ImageIcon为您处理图像的加载。

更改

 Image img = Toolkit.getDefaultToolkit().getImage(url); sb.append(line + ","+ img.getHeight(null) + "," + img.getWidth(Null) + newline); 

 ImageIcon img = new ImageIcon(url); sb.append(line + ","+ img.getIconHeight(null) + "," + img.getIconWidth(Null) + newline); 

主要的变化是使用ImageIcongetIconWidthgetIconHeight方法。

以下应该工作

  Image image = Toolkit.getDefaultToolkit().getImage(image_url); ImageIcon icon = new ImageIcon(image); int height = icon.getIconHeight(); int width = icon.getIconWidth(); sb.append(line + ","+ height + "," + width + newline); 

如果检索URL有困难,可以使用以下代码获得宽度和高度。

 try { File f = new File(yourclassname.class.getResource("data/buildings.jpg").getPath()); BufferedImage image = ImageIO.read(f); int height = image.getHeight(); int width = image.getWidth(); System.out.println("Height : "+ height); System.out.println("Width : "+ width); } catch (IOException io) { io.printStackTrace(); } 

注意: data是/ src中包含图像的文件夹。

归功于Java中获取图像的高度和宽度