Frage

Ich möchte das Datum extrahieren, an dem 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 zu bieten.Ich glaube, dass die Informationen in der Datei gespeichert sind, da das Datum, das ich sehe, wenn ich in Win XP mit dem Mauszeiger über die Datei fahre, ein anderes ist als das, was ich erhalten kann, wenn ich JNI mit „dir /TC“ für die Datei unter DOS verwende.

War es hilfreich?

Lösung

Die Informationen werden im Bild in einem Format namens gespeichert EXIF oder Link Text.Es gibt mehrere Bibliotheken, die dieses Format lesen können Dieses hier

Andere Tipps

Das Datum wird im gespeichert EXIF Daten im JPEG.Da ist ein Java-Bibliothek und ein Viewer in Java das könnte hilfreich sein.

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

Es 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 nicht das Erstellungsdatum enthält, dann müssen Sie wahrscheinlich mit Java Lastupdated machen tun - es sei denn, Sie Runtime.exec (...) greifen wollen und Funktionen System, um herauszufinden, ( ich würde nicht empfehlen, aber!)

Das Codebeispiel fragt unter dem Benutzer für einen Dateipfad 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();}
    }
}

Sie müssen wahrscheinlich etwas für den Zugriff auf die exif Daten. Google schlägt vor, diese Bibliothek .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top