2012-11-26 17 views
6

Ich möchte das "Date Taken" eines Bildes und nicht "Datum geändert" oder "Datum erstellt". Ich habe zwar einige Links auf Stackoverflow gefunden, aber keiner konnte sie abrufen. Das Bildformat ist: tiff und RAW.Get Date eines Bildes genommen

Mit javax.imageio habe ich das folgende Programm geschrieben, aber es druckt nichts. Was bedeutet, es gibt keine reader verfügbar

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

Kern der Java-Bibliotheken verwenden, gibt es eine Methode für den Zugriff auf „Aufnahmedatum“ und nicht „Datum erstellt“ oder „Datum geändert“. Weiterhin ist die data taken Info ist als ich, dass von Bildeigenschaften in O

EDIT sehen: Es stellt sich heraus, dass readers Iterator nichts mit ihm hat. d. h. Größe 0. Dies geschieht nur für TIFF- und RAW-Bilder. Funktioniert gut mit JPEG

+0

Haben Sie die Metadaten Bäume untersucht gefunden werden, um zu sehen, ob Sie das Datum finden können? Posten Sie, was Sie bisher gefunden haben. –

+0

Ja. Es druckt nichts. Wenn das Bild JPEG war, druckte es Informationen wie Kompression etc., aber kein Datum – Jatin

+0

Vielleicht ist der Leser so eingestellt, dass er Metadaten ignoriert: 'System.out.println (reader.isIgnoringMetadata());' – Vulcan

Antwort

7

Ich konnte keine Lösung mit Java-Core-Bibliotheken finden. Gefunden eine Bibliothek namens metadata-extractor, die den Job erledigt.

Weitere Daten können here.