2008-09-17 17 views
8

jpgファイルが作成された日付を抽出したいと思います。 JavaにはFileオブジェクトのlastModifiedメソッドがありますが、ファイルから作成された日付の抽出をサポートしていないようです。 Windows XPでファイル上にマウスポインタを置いたときに表示される日付と同じ情報がファイル内に保存されていると思われます。DOSでファイルの "dir/TC"と共にJNIを使​​用して取得できるものとは異なります。javaで作成された日付画像の入手方法

答えて

10

この情報は、画像内にEXIFまたはlink textという形式で保存されています。以下のコード例は、ファイルパスをユーザーに要求し、その後、作成日時を出力this one

+0

素晴らしい!参考になったすべてのコメントありがとう!私はdrewnoakes.comで図書館を利用すると信じています。 – user16029

+0

交換可能な画像ファイル形式(正式にExif、** JEIDA/JEITA/CIPAの仕様によるEXIF **は標準ではありません) –

0

exifデータにアクセスするには、おそらく何かが必要です。 Googleはthis libraryを提案します。

4

私はこのメタデータライブラリを使用します。http://www.drewnoakes.com/code/exif/

は心に留めては、すべてのJPEG画像がこの情報を持っていないこと、それは100%のフールプルーフすることはできませんが、かなりうまく動作しているようです。

EXIFメタデータに作成された日付が含まれていない場合は、Runtime.exec(...)を使い、システム関数を使用して検索したい場合を除き、おそらくJavaのlastUpdatedを使用する必要があります(しかし、これはお勧めしません!)

+0

ええ、それはいくつかのために働いていました私の画像は、私たちのデータベースに格納されている画像データでは機能しませんでした。 –

0

のように、このフォーマットを読み取ることができるそこにあり、いくつかのライブラリは、:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class Main { 

    public static void main(final String[] args) { 
     try { 
      // get runtime environment and execute child process 
      Runtime systemShell = Runtime.getRuntime(); 
      BufferedReader br1=new BufferedReader(new InputStreamReader(System.in)); 
      System.out.println("Enter filename: "); 
      String fname=(String)br1.readLine(); 
      Process output = systemShell.exec("cmd /c dir /a "+fname); 
      // open reader to get output from process 
      BufferedReader br = new BufferedReader (new InputStreamReader(output.getInputStream())); 

      String out=""; 
      String line = null; 

      int step=1; 
      while((line = br.readLine()) != null) 
       { 
       if(step==6) 
       { 
       out=line; 
       } 
       step++; 
       }   // display process output 

      try{ 
      out=out.replaceAll(" ",""); 
      System.out.println("CreationDate: "+out.substring(0,10)); 
      System.out.println("CreationTime: "+out.substring(10,15)); 
      } 
      catch(StringIndexOutOfBoundsException se) 
      { 
       System.out.println("File not found"); 
      } 
      } 
      catch (IOException ioe){ System.err.println(ioe); } 
      catch (Throwable t) { t.printStackTrace();} 
    } 
} 
+1

コードスニペットをありがとうございますが、実際に画像メタデータから日付を取得する必要があります、ファイルシステムからではありません。 – user16029

+0

これはWindowsでも動作します – ScrappyDev

関連する問題