68 votes

Java/ImageIO Obtenir de l'importance de l'Image sans avoir à lire tout le fichier?

est-il un moyen d'obtenir la dimension d'une image sans avoir à lire tout le fichier ?

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

Merci

123voto

Sam Barnum Points 5019
ImageInputStream in = ImageIO.createImageInputStream(resourceFile);
try {
    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();
        }
    }
} finally {
    if (in != null) in.close();
}

Grâce à sfussenegger pour la suggestion

17voto

sfussenegger Points 16204

À L'Aide De ImageReader.getHeight(int) et ImageReader.getWidth(int) normalement ne lit l'en-tête d'image (je suis à la recherche d'JDK6 sources). Donc ImageReader est probablement le meilleur choix.

1voto

Michael Borgwardt Points 181658

Vous aurez à chercher en ImageReader.getImageMetadata(). Malheureusement, La Java de l'Image de l'API n'est pas du tout facile à utiliser.

Vous pouvez trouver des descriptions des formats de métadonnées dans la documentation du paquet d' javax.imageio.metadata.

Il y a des bibliothèques tierces qui sont plus faciles à utiliser, tels que MediaUtil (dernière mise à jour il y a 3 ans, mais il a bien fonctionné pour moi).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X