Подтвердить что ты не робот

Java/ImageIO получает размеры изображения без чтения всего файла?

Есть ли способ получить размеры изображения без чтения всего файла?

URL url=new URL(<BIG_IMAGE_URL>);
BufferedImage img=ImageIO.read(url);
System.out.println(img.getWidth()+" "+img.getHeight());
img=null;
4b9b3361

Ответ 1

try(ImageInputStream in = ImageIO.createImageInputStream(resourceFile)){
    final Iterator<ImageReader> readers = ImageIO.getImageReaders(in);
    if (readers.hasNext()) {
        ImageReader reader = readers.next();
        try {
            reader.setInput(in);
            return new Dimension(reader.getWidth(0), reader.getHeight(0));
        } finally {
            reader.dispose();
        }
    }
} 

Спасибо sfussenegger за предложение

Ответ 3

Вам нужно будет заглянуть в ImageReader.getImageMetadata(). К сожалению, API-интерфейс Java API совсем не прост в использовании.

Вы можете найти описания форматов метаданных в документации пакета javax.imageio.metadata.

Существуют более простые в использовании библиотеки сторонних разработчиков, такие как MediaUtil (последнее обновление 3 года назад, но оно работало хорошо для меня).