2012-08-24 12 views
9

chciałbym uzyskać metadanych z pliku obrazu w moim systemie lokalnym przy użyciu kodu JavaPobierz dane GPS z obrazka kod Java

W załączonym obrazku widać żądane dane, które chciałbym wyciągnąć z kod java.

enter image description here

napisałem poniższy kod i nie wydaje się ciągnąć dane wymienione w zakładce „Szczegóły”. Poniższy kod wyjściowy jest i nie jest to tym, czego szukam.

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

Proszę, podaj mi swoje pomysły. Dzięki

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

W jaki sposób Twój kod nie spełnia Twoich wymagań? Opisz swój problem bardziej precyzyjnie. – Keppil

+0

Edytowałem moje pytanie. Mam nadzieję, że dałbym ci więcej pomysłu na to, czego szukam :-) – Arun

Odpowiedz

9

Nie ma sposobu, aby zrobić to za pomocą Java Core API. Musiałbyś przetworzyć drzewo metadanych obrazu i zinterpretować odpowiednie tagi EXIF. Zamiast tego możesz pobrać wymagany kod z istniejącej biblioteki z możliwościami analizy EXIF ​​i użyć go w swoich. Na przykład użyłem klasy Image z javaxt, która zapewnia bardzo przydatną metodę wyodrębniania metadanych GPS z obrazu. To jest tak proste, jak:

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

Plus, javaxt.io.Image nie ma zewnętrznych zależności, więc można po prostu użyć tej konkretnej klasy, jeśli nie chcesz, aby dodać zależność od całej biblioteki.

+0

Dobra odpowiedź! Bardzo przydatne !!! Wielkie dzięki !! – Arun

+0

Moja opinia jest taka, że ​​javaxt jest bardziej podobny do obsługi obrazu i do wykonywania operacji. Ekstraktor metadanych służy do wyodrębniania informacji nagłówkowych, które mogą lepiej pasować. –

6

Sugeruję, aby przeczytać nagłówek EXIF ​​obrazu, a następnie przeanalizować znaczniki w celu znalezienia informacji GPS. W Javie znajduje się świetna biblioteka (zwana metadata-ekstraktorem) do wyodrębniania i analizowania nagłówka EXIF. Zapoznaj się z rozpoczęciem tej biblioteki here.

Po wykonaniu dwóch pierwszych kroków w samouczku poszukaj znaczników zaczynających się od [GPS] ([GPS] GPS Longitude, [GPS] GPS Latitude, ...).