Exif mittels Java auslesen

TheGame

Neues Mitglied
Hallo Community,

folgendes Problem habe ich.
Ich suche nach einer Möglichkeit, das Erstelldatum einer JPEG-Datei auszulesen.
Hab bereits rausgefunden, das dies mit Exif geht.
Dazu habe ich auch diese Tolle Seite mit passender Bibliotheken gefunden: drewnoakes.com - jpeg exif / iptc metadata extraction in java

Da ich Java Technisch nur Grundlagen aus der Schule/Ausbildung kenne, konnte ich nicht ganz so viel damit anfangen. Also hab ich noch weiter gesucht und dann folgende Lösung gefunden:

Java:
import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;
import java.io.File;
import java.util.Iterator;

 

public class main {
   
    public static void main(String[] args) {
        File jpegFile = new File("D:/Bilder/IMG_5177.JPG");
        Metadata metadata = null;
        try {
            metadata = JpegMetadataReader.readMetadata(jpegFile);
        } catch (JpegProcessingException ex) {
            ex.printStackTrace();
        }
        
        // iterate through metadata directories
        Iterator directories = metadata.getDirectoryIterator();
        if(directories != null) {
            while (directories.hasNext()) {
                Directory directory = (Directory)directories.next();
                // iterate through tags and print to System.out
                Iterator tags = directory.getTagIterator();
                while (tags.hasNext()) {
                    Tag tag = (Tag)tags.next();
                    // use Tag.toString()
                    System.out.println(tag);
                    
                }           
            }
        }
    }
}

Bis Zeile 22 ist mir noch alles klar, aber ab dieser Zeile versteh ich nur Bahnhof.
Dieses Programm liefert mir dann alle gespeicherten Exif-Informationen, allerdings brauch ich nur das Datum, wann das Bild erstellt wurde. Dies wird auch angezeigt: [Exif] Date/Time - 2010:09:30 19:07:08

Hat jemand vielleicht nen Vorschlag wie ich nur das Datum rausfiltern kann oder ähnliches?
Mein Englisch ist auch nicht gerade das beste, darum kann ich mit der Webseite auch nicht ganz so viel anfangen :(

Danke für Eure Hilfe

Lg
 

tagedieb

Top Contributor
so muesste es eigentlich funktionieren
1. zuerst das "Exif" directory raussuchen
2. dann nur noch das datetime Tag rauslesen

Java:
com.drew.metadata.exif.ExifDirectory exifDirectory 
    = metadata.getDirectory(com.drew.metadata.exif.ExifDirectory.class);
java.util.Date date = exifDirectory.getDate(com.drew.metadata.exif.ExifDirectory.TAG_DATETIME);
 

uwe75-1

Mitglied
Hallöle,

Sorry, wenn ich das Thema nochmal öffne, aber ich will auch genau nur ganz bestimmte EXIF-Daten auslesen und TheGame scheint ja mit dem Hinweis von tagedieb bestens zurecht gekommen sein. Leider funktioniert das bei mir nicht. Die zwei Befehlszeilen ergeben bei Netbeans folgende Fehler:

found : com.drew.metadata.Directory
required: com.drew.metadata.exif.ExifDirectory
= metadata.getDirectory(com.drew.metadata.exif.ExifDirectory.class);

Leider komme ich nicht dahinter was falsch sein könnte.
Weiß jemad Rat? Dar wäre echt super!

Hier mein kompletter Code:
Java:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="com.drew.metadata.Tag"%>
<%@page import="com.drew.metadata.Directory"%>
<%@page import="com.drew.metadata.Metadata"%>
<%@page import="com.drew.metadata.exif.*"%>
<%@page import="com.drew.imaging.jpeg.JpegMetadataReader"%>
<%@page import="com.drew.imaging.jpeg.JpegProcessingException"%>
<%@page import="java.io.File, java.util.Iterator"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%
        File jpegFile = new File("D:\\test.jpg");
        Metadata metadata = null;
        try {
            metadata = JpegMetadataReader.readMetadata(jpegFile);
        } catch (JpegProcessingException ex) {
            ex.printStackTrace();
        }
        
        // iterate through metadata directories
        Iterator directories = metadata.getDirectoryIterator();
        if(directories != null) {
            while (directories.hasNext()) {
                Directory directory = (Directory)directories.next();
                // iterate through tags and print to System.out
                Iterator tags = directory.getTagIterator();
                while (tags.hasNext()) {
                    Tag tag = (Tag)tags.next();
                    // use Tag.toString()
                    out.println(tag+"<br>");
                    
                }           
            }
        }
        com.drew.metadata.exif.ExifDirectory exifDirectory
            = metadata.getDirectory(com.drew.metadata.exif.ExifDirectory.class);
        java.util.Date date = exifDirectory.getDate(com.drew.metadata.exif.ExifDirectory.TAG_DATETIME);
        out.println(date);
%>
 

tagedieb

Top Contributor
Ich glaube in meiner Loesung hatte ich den Cast vergessen..
Einfacher noch ist direkt
Code:
com.drew.metadata.Directory
als Typ deklarieren

Java:
com.drew.metadata.Directory exifDirectory 
    = metadata.getDirectory(com.drew.metadata.exif.ExifDirectory.class);
java.util.Date date = exifDirectory.getDate(com.drew.metadata.exif.ExifDirectory.TAG_DATETIME);
 
S

schattengay

Gast
Was mache ich falsch!
Danke schonmal für die antworten
Java:
import java.io.*;
import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.exif.ExifIFD0Directory;
import java.io.File;
import java.util.Iterator;
import java.util.Date;
import com.drew.imaging.ImageMetadataReader;
public class Programs
{
    public static void main(String[] args)
    {
        

		 File jpegFile = new File("t.JPG");
   	Metadata metadata = null;
      
	try {
metadata = ImageMetadataReader.readMetadata(jpegFile);
       //       metadata = JpegMetadataReader.readMetadata(jpegFile);
 } catch (IOException ioexception) {}
    
        
        Directory directory = metadata.getDirectory(ExifIFD0Directory.class);
	Date date = directory.getDate(ExifIFD0Directory.TAG_DATETIME);
	System.out.println (date); 
  

    }
}
 

tagedieb

Top Contributor
Was mache ich falsch!
Danke schonmal für die antworten

:bahnhof:

Was du falsch machst? Du hast weder dein Problem beschrieben noch hast eine Frage gestellt. Wie sollen wir dir da helfen koennen. Ich werde mal meine Kristalkugel befragen ;-)


Als erstes wuerd ich mal ueberpruefen ob dein File auch gefunden wird oder ob eine Exception geworfen wird, die du abfaengst aber nicht verarbeitest und ob das Bild ueberhaupt Exif-Daten enhaelt. Nicht alle .jpg enhalten Exif-Daten.
 
S

schattengay

Gast
sorry

mein problem ist dieses

java:21
unreported exeption com.drew.imageProcessingException; must be caught or declared to be throw
metadata = ImageMetadataReder.readMetadata(jpegFile);
/\
 

tagedieb

Top Contributor
Und wo ist das Problem? Der Compiler sagt dir ja schon die Loesung.
Du musst die ImageProcessingException abfangen...

Java:
		try {
			metadata = ImageMetadataReader.readMetadata(jpegFile);
		} catch (IOException ioexception) {
			ioexception.printStackTrace();
		} catch (ImageProcessingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
S

schattengay

Gast
Danke

ich habe es auch fersucht aber bei mir war es nur schrot und es gab noch mehr fehlermeldungen
 

Andi_CH

Top Contributor
Hilfe ich habe ein Problem, helft mir -
Ach so - was für Eines ist auch noch wichtig :) ... und dann kommt noch dazu dass ich die Lösung längst gefunden habe ;-)

Ernsthaft - just for fun wollte ich das mal ausprobieren, aber
Code:
com.drew.metadata.exif.ExifDirectory
gibt es bei mir nicht
Da ist z.B. ein ExifIFD0Directory drin und das ist von com.drew.metadata.Directory abgeleitet ....

Die richtige Version laden hilft, denn nach Version 2.3.1 ist das verschwunden - na ja, einfach so als Hinweis für Nachamer - 2.3.1 steht ja immer noch zur Verfügung.
 

Stephan2009

Aktives Mitglied
Hallo zusammen, nach einiger Suche bin ich auf dieses Interessante Thema gestoßen, ich möchte auch gerne Exif Daten aus Fotos auslesen allerdings sind die Fotos nicht auf der Festplatte sondern als URL vorhanden. Ist dies trotzdem möglich diese auszulesen?
 

tagedieb

Top Contributor
Solange du Zugriff auf die Fotos hast sollte das kein Problem sein. Du kannst die Methode

Java:
ImageMetadataReader.readMetadata(java.io.BufferedInputStream inputStream, boolean waitForBytes)

verwenden oder einfach das File runterladen und die Daten auslesen.
 

Allrounder93

Aktives Mitglied
Hey,

ich hab da auch mal ein Problemchen...
Wie bekomme ich die
import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;
eingebunden?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W 2D-Grafik Erstellungsdatum JPG direkt aus Header (EXIF) auslesen. Allgemeine Java-Themen 5
J EXIF Daten in Bilddatei ändern? Allgemeine Java-Themen 2
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 2
N Lottowebsite programmieren mittels Java, HTML,.... Allgemeine Java-Themen 7
W PDFs signieren mittels IText / Lowagie Allgemeine Java-Themen 0
Zrebna Möglichkeit regelmäßige indentation mittels/innerhalb Stringbuilder Allgemeine Java-Themen 14
J RotSchwarzBaum: Löschen mittels insert-Methode Allgemeine Java-Themen 20
LimDul Mittels Streams aus Strings A B C den String A, B und C machen Allgemeine Java-Themen 12
X Brüche kürzen mittels Methoden und ggT Allgemeine Java-Themen 15
D HTTP Http-Link mittels GUI schreiben Allgemeine Java-Themen 5
B Java Sternchen ausgeben mittels Rekursion Allgemeine Java-Themen 3
J GUI-Einstellungen mittels Preferences Allgemeine Java-Themen 6
Todesbote JFileChooser im Vordergrund (*.jar wird mittels shell_exec in PHP aufgerufen) Allgemeine Java-Themen 1
E Videosequenz mittels Java aus Video schneiden Allgemeine Java-Themen 10
B Ordner öffnen mittels Java in Linux-Umgebung Allgemeine Java-Themen 7
I Webseite auslesen (welche mittels Javascript Inhalt einbindet) Allgemeine Java-Themen 4
T HTML Tag Position mittels Pattern ermitteln Allgemeine Java-Themen 7
RySa Variablenname mittels Reflexions rausbekommen (als String) ? Allgemeine Java-Themen 9
U Classpath DLLs mittels System.load() laden: Allgemeine Java-Themen 6
T Wie rufe ich mittels String-Inhalts eine Methode auf? Allgemeine Java-Themen 3
A Sudoku mittels Backtracking Problem Allgemeine Java-Themen 6
7 Webseiten mittels Java auslesen Allgemeine Java-Themen 7
H Zwei verschiedene Dateien mittels einem Binärstream übertragen? Allgemeine Java-Themen 13
dunhillone Mittels Annotations Methoden "erweitern"? Allgemeine Java-Themen 11
S Mittels eines Applets Bilder generieren die in einer Webseite angezeigt werden..? Allgemeine Java-Themen 8
X String zerlegen mittels regulärem Ausdruck Allgemeine Java-Themen 31
O Programm mittels Java installieren Allgemeine Java-Themen 15
S Array-Sort mittels Binärsuche Allgemeine Java-Themen 2
J Setter mittels invoice aufrufen Allgemeine Java-Themen 4
S Eingabeprüfung mittels Regexp Allgemeine Java-Themen 5
J Objekt in Datei speichern mittels Streams Allgemeine Java-Themen 6
D Einfaches Nutzen von Plugins mittels generischer Methode Allgemeine Java-Themen 3
E Aus mehreren PDFs eines machen, zusammenfügen mittels iText Allgemeine Java-Themen 1
G Graph mittels Punkte erstellen Allgemeine Java-Themen 27
M Problem bei PDF-Anzeige mittels Acrobat Viewer Bean Allgemeine Java-Themen 2
G HTML Code aus String mittels REGEX entfernen Allgemeine Java-Themen 2
spacegaier Performanceproblem beim Einlesen aus Datei mittels Threads Allgemeine Java-Themen 23
G Screenshot mittels robot ausführen Allgemeine Java-Themen 4
B Html Formulare mittels Java automatisch senden Allgemeine Java-Themen 5
E import mittels Eclipse Allgemeine Java-Themen 3
F mittels Collection<A> an A.class kommen? Allgemeine Java-Themen 7
T IF Abfrage + YES_NO Option mittels JOptionPane Allgemeine Java-Themen 3
F Zugriff mittels getObject() oder this.object ? Allgemeine Java-Themen 8
J Tonbalance mittels JMF regeln Allgemeine Java-Themen 3
G Font mittels ClassLoader in .jar wirft NotFoundException Allgemeine Java-Themen 10
R Interface mittels Reflection implementieren Allgemeine Java-Themen 8
G eigener logger mittels classe (dynamische logfilename) log4j Allgemeine Java-Themen 15
K Mittels Generics eine Methode verallgemeinern Allgemeine Java-Themen 2
A FTPS bzw. FTP over SSL mittels Java Allgemeine Java-Themen 9
Y komprimierung mittels Huffman-Algorithmus, bit-shifting. Allgemeine Java-Themen 2
G mysql datum umwandeln mittels jsp Allgemeine Java-Themen 10
F Hilfe: Adjazenzmatrix mittels JUnit testen. Allgemeine Java-Themen 2
Natorion Erkennen ob das Programm mittels Jar-Datei oder class . Allgemeine Java-Themen 9
P E-Mails mittels POP3 abrufen Allgemeine Java-Themen 2
S mail von server mittels mailapi löschen Allgemeine Java-Themen 2
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben