2012-08-24 9 views
9

Ich mag die Metadaten aus einer Image-Datei erhalten, in meinem lokalen System mit Hilfe von Java-CodeErhalten Sie GPS-Daten aus einem Bild von Java-Code

Im beigefügten Bild können Sie die gewünschten Daten sehen, die Ich mögen würde von ziehen Java-Code.

enter image description here

Ich schrieb den folgenden Code und scheinen nicht die Daten in der Registerkarte „Details“ erwähnt ziehen. Die Ausgabe des unteren Codes ist und das ist nicht das, wonach ich suche.

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

Bitte geben Sie mir Ihre Ideen. Dank

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

Inwiefern entspricht Ihr Code nicht Ihren Anforderungen? Bitte geben Sie Ihr Problem deutlicher an. – Keppil

+0

Bearbeitete meine Frage. Hoffe, dass würde dir mehr Idee geben, wonach ich suche :-) – Arun

Antwort

9

Es gibt keine easy Möglichkeit, es mit der Java Core API zu tun. Sie müssten den Metadatenbaum des Bildes analysieren und die richtigen EXIF-Tags interpretieren. Stattdessen können Sie den erforderlichen Code aus einer vorhandenen Bibliothek mit EXIF-Parsing-Funktionen abrufen und in Ihrem verwenden. Zum Beispiel habe ich die Klasse Image von javaxt verwendet, die eine sehr nützliche Methode bietet, GPS-Metadaten aus einem Bild zu extrahieren. Es ist so einfach wie:

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

Plus javaxt.io.Image keine externen Abhängigkeiten hat, so können Sie nur diese bestimmte Klasse verwenden, wenn Sie nicht über eine Abhängigkeit von der gesamten Bibliothek hinzufügen möchten.

+0

Schöne Antwort! Sehr hilfreich !!! Danke vielmals !! – Arun

+0

Meine Meinung ist, dass der javaxt mehr wie eine Bildverarbeitung und zum Anwenden von Operationen ist. Der Metadaten-Extraktor dient zum Extrahieren von Kopfzeileninformationen, die möglicherweise besser passen. –

6

Ich schlage vor, Sie den EXIF-Header des Bildes zu lesen und dann die Tags analysieren, um die GPS-Informationen zu finden. In Java gibt es eine große Bibliothek (namens metadata-extractor) zum Extrahieren und Parsen des EXIF-Headers. Bitte beachten Sie die ersten Schritte für diese Bibliothek here.

Sobald Sie die ersten beiden Schritte im Lernprogramm durchgeführt haben, suchen Sie nach den Tags beginnend mit [GPS] ([GPS] GPS Longitude, , ...).

Verwandte Themen