Hi Forum,
ich versuche mich gerade darin, für verschiedene Fotos die Brennweite des verwendeten Objektivs zu ermitteln.
Manuell mache ich das bei mir auf Linux mit folgendem Konsolen-Kommando:
/usr/bin/exiftool -a -T -FocalLength 1.JPG
Das würde ich nun gerne mit Java automatisieren. Der Start des Kommandos scheint schonmal so zu gelingen:
Jetzt stellt sich noch die Frage, wie ich die Ausgabe von exiftool in mein Java-Programm einlesen kann. Ich schätze mal, ich muss eine Pipe anlegen und irgendwie mit Streams arbeiten. Meine Java-Kenntnisse reichen aber noch nicht ganz so weit, dass ich die gefundenen Infos hierzu auf mein Beispiel anwenden könnte. Hättet Ihr einen Tip für mich, wie ich prinzipiell vorgehen muss? Das wäre klasse! Danke schonmal
EDIT: Hier ein Versuch, der noch nicht ganz funktioniert. in.read() liefert gleich -1, der Datenstrom scheint also leer zu sein (oder?). Wo könnte der Fehler liegen?
ich versuche mich gerade darin, für verschiedene Fotos die Brennweite des verwendeten Objektivs zu ermitteln.
Manuell mache ich das bei mir auf Linux mit folgendem Konsolen-Kommando:
/usr/bin/exiftool -a -T -FocalLength 1.JPG
Das würde ich nun gerne mit Java automatisieren. Der Start des Kommandos scheint schonmal so zu gelingen:
Java:
String cmd = "/usr/bin/exiftool -a -T -FocalLength 1.JPG";
try {
Runtime.getRuntime().exec(cmd);
} catch (Exception e) {
System.out.println(e.getMessage());
}
Jetzt stellt sich noch die Frage, wie ich die Ausgabe von exiftool in mein Java-Programm einlesen kann. Ich schätze mal, ich muss eine Pipe anlegen und irgendwie mit Streams arbeiten. Meine Java-Kenntnisse reichen aber noch nicht ganz so weit, dass ich die gefundenen Infos hierzu auf mein Beispiel anwenden könnte. Hättet Ihr einen Tip für mich, wie ich prinzipiell vorgehen muss? Das wäre klasse! Danke schonmal
EDIT: Hier ein Versuch, der noch nicht ganz funktioniert. in.read() liefert gleich -1, der Datenstrom scheint also leer zu sein (oder?). Wo könnte der Fehler liegen?
Java:
String cmd = "/usr/bin/exiftool -a -T -FocalLength 1.JPG";
Runtime runtime = Runtime.getRuntime();
Process process = null;
try {
process = runtime.exec(cmd);
DataInputStream in = new DataInputStream(process.getInputStream());
System.out.println(in.read());
} catch (Exception e) {
System.out.println(e.getMessage());
}
Zuletzt bearbeitet: