2012-11-26 62 views
6

我想查找圖像的「拍攝日期」,而不是「日期修改」或「創建日期」。儘管我已經在stackoverflow上找到了一些鏈接,但沒有人可以檢索它。圖像格式是:tiff和RAW。獲取拍攝日期的圖像

使用javax.imageio,我寫了下面的程序,但它沒有打印任何東西。這意味着沒有reader可用

 File file = new File(fileName); 
     ImageInputStream iis = ImageIO.createImageInputStream(file); 
     Iterator<ImageReader> readers = ImageIO.getImageReaders(iis);    
     if (readers.hasNext()) { 
      // pick the first available ImageReader 
      ImageReader reader = readers.next(); 
      // attach source to the reader 
      reader.setInput(iis, true); 
      // read metadata of first image 
      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 ]); 
       displayMetadata(metadata.getAsTree(names[i])); 
      } 
     } 

使用核心Java庫,有沒有訪問「拍攝日期」的方法,而不是「創建日期」或「修改日期」。 進一步的data taken信息可用,因爲我可以看到,從圖像特性在OS

編輯:原來,readers迭代器有與它無關。即大小0.它只發生在tiff和原始圖像上。使用jpeg很好用

+0

您已檢查元數據的樹,看是否能找到的日期?發佈您迄今爲止發現的內容。 –

+0

是的。它什麼都不打印。如果圖像是jpeg,它確實打印了壓縮等信息,但沒有采取日期 – Jatin

+0

也許讀者被設置爲忽略元數據:'System.out.println(reader.isIgnoringMetadata());' – Vulcan

回答

7

我找不到任何使用java核心庫的解決方案。找到一個名爲metadata-extractor的庫來完成這項工作。

更多信息,可以發現here.