Получение высоты и ширины изображения в Java без ImageObserver - PullRequest
4 голосов
/ 26 июля 2010

Я пытаюсь получить height и width изображений (через URL) в Java без ImageObserver.Мой текущий код:

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() требуют Обозревателя изображений, которого у меня нет.Заранее спасибо.

Ответы [ 3 ]

9 голосов
/ 26 июля 2010

Вы можете использовать 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 методов.

2 голосов
/ 26 июля 2010

Подписка должна работать

   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);
0 голосов
/ 13 августа 2013

В случае затруднений с получением 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, содержащаяimages.

Кредит идет на Получение высоты и ширины изображения в Java

...