2012-08-24 9 views
9

vorrei ottenere i metadati da un file immagine nel mio sistema locale utilizzando il codice JavaOttenere dati GPS da un'immagine codice Java

Nell'immagine allegata è possibile vedere i dati desiderati, che mi piacerebbe tirare da codice java.

enter image description here

ho scritto il codice qui sotto e non sembrano tirare i dati menzionati nella scheda "Dettagli". L'output del codice qui sotto è e questo non è quello che cerco.

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

Per favore dammi le tue idee. Grazie

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

In che modo il tuo codice non soddisfa le tue esigenze? Si prega di indicare il problema più chiaramente. – Keppil

+0

Modificato la mia domanda. Spero che ti darebbe più idea su quello che cerco :-) – Arun

risposta

9

Non c'è facile modo per farlo con l'API Java Core. Dovresti analizzare l'albero dei metadati dell'immagine e interpretare i tag EXIF ​​corretti. Invece, puoi raccogliere il codice richiesto da una libreria esistente con funzionalità di analisi EXIF ​​e utilizzarlo nel tuo. Ad esempio, ho utilizzato la classe Image di javaxt, che fornisce un metodo molto utile per estrarre i metadati GPS da un'immagine. E 'semplice come:

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

Inoltre, javaxt.io.Image ha dipendenze esterne, in modo da poter utilizzare solo quella classe particolare se non si desidera aggiungere una dipendenza l'intera libreria.

+0

Bella risposta! Molto utile !!! Molte grazie !! – Arun

+0

La mia opinione è che il javaxt è più simile a una gestione delle immagini e per l'applicazione delle operazioni. Il metadata-extractor serve per estrarre le informazioni dell'intestazione che potrebbero essere più adatte. –

6

vi consiglio di leggere l'intestazione EXIF ​​dell'immagine e quindi analizzare i tag per trovare le informazioni GPS. In Java c'è una grande libreria (chiamata metadata-extractor) per estrarre e analizzare l'intestazione EXIF. Si prega di vedere il cominciare per questa libreria here.

Una volta eseguiti i primi 2 passaggi del tutorial, cercare i tag che iniziano con [GPS] ([GPS] GPS Longitude, [GPS] GPS Latitude, ...).

Problemi correlati