在没有ImageObserver的情况下在Java中获取图像的高度和宽度
我试图在没有ImageObserver的情况下在Java中获取图像的height
和width
(通过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(); }
当我进入调试模式时,我能够看到图像已加载,我可以看到图像的height
和width
,但我似乎无法返回它们。 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);
主要的变化是使用ImageIcon
和getIconWidth
, getIconHeight
方法。
以下应该工作
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中获取图像的高度和宽度