proyecto - Java/ImageIO obteniendo las dimensiones de la imagen sin leer todo el archivo?
subir imagen netbeans (3)
¿Hay alguna manera de obtener las dimensiones de una imagen sin leer todo el archivo?
URL url=new URL(<BIG_IMAGE_URL>);
BufferedImage img=ImageIO.read(url);
System.out.println(img.getWidth()+" "+img.getHeight());
img=null;
El uso de ImageReader.getHeight(int) y ImageReader.getWidth(int) normalmente solo lee el encabezado de la imagen (estoy buscando fuentes JDK6). Entonces, es muy probable que ImageReader sea la mejor opción.
Tendrás que mirar en ImageReader.getImageMetadata()
. Desafortunadamente, The Java Image API no es para nada fácil de usar.
Puede encontrar descripciones de los formatos de metadatos en la documentación del paquete de javax.imageio.metadata
.
Hay bibliotecas de terceros que son más fáciles de usar, como MediaUtil (actualizado por última vez hace 3 años, pero me funcionó bien).
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();
}
}
}
Gracias a sfussenegger por la sugerencia