2012-08-24 18 views
9

我想使用Java代碼從圖像獲取GPS數據的Java代碼

在所附的圖像,你可以看到,我想從其中提取所需要的數據,以獲得從圖像文件的元數據在我的本地系統java代碼。

enter image description here

我寫了下面的代碼,似乎沒有拉在「詳細信息」選項卡中提到的數據。下面的代碼的輸出是,這不是我所期待的。

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

請給我你的想法。謝謝

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(); 
     } 
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

以什麼方式不符合您的要求?請更清楚地說明你的問題。 – Keppil

+0

編輯我的問題。希望這會給你更多的想法,我想找什麼:-) – Arun

回答

9

沒有簡單用Java Core API來做到這一點。您必須解析圖像的元數據樹,並解釋正確的EXIF標籤。相反,您可以使用EXIF解析功能從現有庫中提取所需的代碼,並將其用於您的代碼中。例如,我使用了Imagejavaxt,它提供了一種從圖像中提取GPS元數據的非常有用的方法。這很簡單,只要:

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

另外,javaxt.io.Image沒有外部依賴,所以你可以使用特定的類,如果你不希望添加的整個庫的依賴性。

+0

尼斯答覆!很有用 !!!非常感謝 !! – Arun

+0

我的看法是,javaxt更像是一個圖像處理和應用操作。元數據提取器用於提取可能更合適的標題信息。 –

6

我建議你閱讀圖像的EXIF標題,然後解析標籤以查找GPS信息。在Java中,有一個偉大的庫(稱爲元數據提取器)用於提取和解析EXIF頭。請參閱此庫的入門here

一旦您完成本教程的前兩個步驟,請查找以[GPS][GPS] GPS Longitude,[GPS] GPS Latitude,...)開頭的標籤。