2008-09-17 10 views
8

Ich möchte das Datum eine JPG-Datei erstellt wurde. Java verfügt über die lastModified-Methode für das File-Objekt, scheint jedoch keine Unterstützung für das Extrahieren des Erstellungsdatums aus der Datei bereitzustellen. Ich glaube, dass die Information in der Datei als das Datum gespeichert wird, das ich sehe, wenn ich den Mauszeiger über die Datei in Win XP führe, ist anders als was ich bekommen kann, indem ich JNI mit "dir/TC" auf der Datei in DOS verwende.Wie bekomme ich das Datum Bild erstellt in Java

Antwort

10

Die Informationen werden im Bild in einem Format namens EXIF oder link text gespeichert. Es gibt mehrere Bibliotheken gibt der Lage, dieses Format zu lesen, wie this one

+0

Großartig! Danke für alle hilfreichen Kommentare! Ich glaube, dass ich die Bibliothek bei drewnoakes.com benutzen werde. – user16029

+0

Austauschbare Bilddateiformat (offiziell Exif, ** nicht EXIF ​​** nach JEIDA/JEITA/CIPA-Spezifikationen) ist ein Standard, der ... –

0

Sie benötigen wahrscheinlich etwas, um auf die exif Daten zuzugreifen. Google schlägt this library vor.

4

Ich benutze diese Metadaten Bibliothek: http://www.drewnoakes.com/code/exif/

scheint ziemlich gut zu funktionieren, obwohl bedenken Sie, dass nicht alle JPEG-Bilder über diese Informationen verfügen, so dass es nicht zu 100% narrensicher sein kann.

Wenn die EXIF-Metadaten das Erstellungsdatum nicht enthalten, müssen Sie sich wahrscheinlich mit dem lastUpdated von Java behelfen - es sei denn, Sie möchten auf Runtime.exec (...) zurückgreifen und Systemfunktionen verwenden, um das herauszufinden (Ich würde dies jedoch nicht empfehlen!)

+0

Ja, es funktionierte für einige meine Bilder und funktionierte nicht für Bilddaten in unserer Datenbank gespeichert. –

0

Das folgende Codebeispiel den Benutzer für einen Dateipfad fragt und gibt dann das Erstellungsdatum und -uhrzeit:

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

Danke für das Code-Snippet, aber ich muss tatsächlich das Datum aus den Bild-Metadaten erhalten nicht aus dem Dateisystem. – user16029

+0

Dies funktioniert nur für Windows – ScrappyDev

Verwandte Themen