[英]Getting Height and Width of Image in Java without an ImageObserver
I am trying to get the height
and width
of images (via a url) in Java without an ImageObserver. 我试图在没有ImageObserver的情况下在Java中获取图像的
height
和width
(通过URL)。 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. 当我进入调试模式时,我能够看到图像已加载,我可以看到图像的
height
和width
,但我似乎无法返回它们。 The getHeight()
and getWidth()
methods require an Image Observer, which i don't have. getHeight()
和getWidth()
方法需要一个我没有的Image Observer。 Thank you in advance. 先感谢您。
You can use ImageIcon to handle the loading of the image for you. 您可以使用ImageIcon为您处理图像的加载。
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. 主要的变化是使用
ImageIcon
和getIconWidth
, getIconHeight
方法。
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);
One can get width and height using following code if there is difficulty in retrieving URL. 如果检索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. 注意: data是/ src中包含图像的文件夹。
Credit goes to Getting height and width of image in Java 归功于Java中获取图像的高度和宽度
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.