2012-08-24 83 views
9

me gustaría obtener los metadatos de un archivo de imagen en mi sistema local utilizando código JavaObtener los datos GPS de una imagen de código Java

En la imagen adjunta se puede ver los datos deseados, que me gustaría sacar de código java

enter image description here

que escribió el código abajo y no parecen tirar de los datos mencionados en la pestaña "Detalles". La salida del código a continuación es y esto no es lo que busco.

Started .. 
Format name: javax_imageio_jpeg_image_1.0 
Format name: javax_imageio_1.0 

Por favor, dame tus ideas. Gracias

try { 
      ImageInputStream inStream = ImageIO.createImageInputStream(new File("D:\\codeTest\\arun.jpg")); 
      Iterator<ImageReader> imgItr = ImageIO.getImageReaders(inStream); 

      while (imgItr.hasNext()) { 
       ImageReader reader = imgItr.next(); 
       reader.setInput(inStream, true); 
       IIOMetadata metadata = reader.getImageMetadata(0); 

       String[] names = metadata.getMetadataFormatNames(); 
       int length = names.length; 
       for (int i = 0; i < length; i++) { 
        System.out.println("Format name: " + names[ i ]); 
       } 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
+2

¿De qué manera su código no se ajusta a sus requisitos? Por favor, indique su problema más claramente. – Keppil

+0

Editado mi pregunta. Espero que te dé más idea de lo que busco :-) – Arun

Respuesta

9

No hay fácil forma de hacerlo con la API Java Core. Tendría que analizar el árbol de metadatos de la imagen e interpretar las etiquetas EXIF ​​correctas. En su lugar, puede recoger el código requerido de una biblioteca existente con capacidades de análisis EXIF, y utilizarlo en el suyo. Por ejemplo, he usado la clase Image de javaxt, que proporciona un método muy útil para extraer metadatos de GPS de una imagen. Es tan simple como:

javaxt.io.Image image = new javaxt.io.Image("D:\\codeTest\\arun.jpg"); 
double[] gps = image.getGPSCoordinate(); 

Plus, javaxt.io.Image no tiene dependencias externas, por lo que sólo se puede utilizar esa clase en particular si no desea agregar una dependencia de la biblioteca entera.

+0

¡Buena respuesta! Muy útil !!! Muchas gracias !! – Arun

+0

Mi opinión es que javaxt es más como un manejo de imágenes y para aplicar operaciones. El extractor de metadatos es para extraer información del encabezado que puede ajustarse mejor. –

6

Le sugiero que lea el encabezado EXIF ​​de la imagen y luego analice las etiquetas para encontrar la información del GPS. En Java hay una gran biblioteca (llamada metadata-extractor) para extraer y analizar el encabezado EXIF. Consulte el inicio de esta biblioteca here.

Una vez que haya realizado los primeros 2 pasos en el tutorial, busque las etiquetas que comienzan con [GPS] ([GPS] GPS Longitude, [GPS] GPS Latitude, ...).

Cuestiones relacionadas