Getting Height and Width of Image in Java without an ImageObserver

廉价感情. 提交于 2019-12-19 22:00:44

问题


I am trying to get the height 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 height and the width of the image, but i can't seem to return them. The getHeight() and getWidth() methods require an Image Observer, which i don't have. Thank you in advance.


回答1:


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.




回答2:


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



回答3:


One can get width and height using following code if there is difficulty in retrieving 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();
  }

Note: data is folder in /src containing images.

Credit goes to Getting height and width of image in Java



来源:https://stackoverflow.com/questions/3336558/getting-height-and-width-of-image-in-java-without-an-imageobserver

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!