views:

31

answers:

2

Hi everyone,

I am trying to get the heigh and width of images (via a url) in Java without an ImageObserver. My current code is:

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();
}

When i go into debug mode I am able to see that the image was loaded and I can see the Heigh and the Width of the image, but I can't seem to return them. The getHeigh and getWidth methods require an Image Observer, which I dont have. Thank you in advance.

+1  A: 

You can use ImageIcon to handle the loading of the image for you.

Change

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

to

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

The main change is to use ImageIcon, and the getIconWidth, getIconHeight methods.

mdma
Thanks a lot. I realised this and came back to answer the question myself :P. Thanks alot though.
Bilzac
+1  A: 

Following should work

   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);
YoK