Exif-Daten bei hunderten Bildern neu erstellen?

M-M-C

Aktiver NGBler
Registriert
15 Juli 2013
Beiträge
849
Ort
Norddeutschland
Moin,
ich habe ein kleines Problem, bei dem ich alleine irgendwie nicht weiterkomme.
Es geht um Exif-Daten bei einer Bilderserie, bzw. die Abwesenheit der Daten.
Ich habe eine Bild-Dokumentation eines Laborversuches aus dem ein Zeitraffer-Video erstellt werden soll. Das Programm, welches den Timecode in die Bilder einfügt, orientiert sich dabei an den Exif-Daten.
Bisher war das dann so gehandhabt: Die Bilder wurden im Abstand von zehn Sekunden vollautomatisch geschossen, also die Exif-Daten sind immer 10 Sekunden pro Bild unterschiedlich. Danach wurden die Exif-Daten alle Bilder per Batch gleichzeitig bearbeitet. Wenn z.B. das erste Bild einen Timecode von 9:30:12 hatte, wurden 9 Stunden, 30 Minuten und 12 Sekunden von allen Bildern abgezogen. Somit hatte dann das erste Bild einen Timecode von 0:00:00, das zweite 0:00:10, das dritte 0:00:20 usw.
Danach folgt eine zweite Batch-Bearbeitung, die nur noch die Zeit aus den Exif-Daten ausliest und in das Bild einfügt. Fügt man diese Bilder danach als Bilderserie zusammen, hat man einen schönen mitlaufenden Zeitstempel, der bei Laborversuchen ein absolutes Muss ist.
Jetzt mein Problem:
Die Bilder wurden nachträglich bearbeitet und die Exif-Daten sind dabei flöten gegangen. Gibt es eine Möglichkeit die Exif-Zeit nach dem Original-Schema neu zu erstellen?
Also Bild 1 -> 00:00:00
Bild 2 -> 00:00:10
Bild 3 -> 00:00:20
usw...
Manuell ist dies zwar möglich, aber so eine Bilderserie hat schon mal einige hundert Bilder. Hat da jemand eine praktikable Lösung für mich? Von kompletten Grafikprogrammen bis hin zu commandline tools bin ich für alles offen. Ich stehe da gerade ziemlich auf dem Schlauch :unknown:
 
  • Thread Starter Thread Starter
  • #3
Das sieht schon mal sehr vielversprechen aus. Jetzt muss ich mir nur noch irgendwie dafür ein script/batch aus den Fingern saugen, welches die Bilder mit den Zehn Sekunden Unterschied taggt. Das wird noch lustig.... :confused: (will sagen, dafür muss ich mir Hilfe suchen)
 
  • Thread Starter Thread Starter
  • #4
Habs hinbekommen, war etwas komplizierter als gedacht, aber nun gehts.
Falls jemand so etwas als Vorlage braucht, hier ist die Batch:
Code:
Expand Collapse Copy
@ECHO OFF

REM Startwert für die hochzuzaehlende Sekunden
SET /a sek=0

REM Da man innerhalb einer FOR-Schleife Variablen nicht bearbeiten kann, wird hier eine Extra-Variable definiert.
REM Die FOR-Schleife ruft eine andere "Unterschleife" auf und übergibt den Dateinamen mit Hilfe dieser Variable.
SET bildername=

REM Das Programm erstellt erst einmal den EXIF-Header, sonst kann man keine Daten reinschreiben.
copy jhead-orig.exe .\Bilder\jhead.exe
cd Bilder

jhead.exe -mkexif *.jpg
jhead.exe -mkexif *.jpeg

cls
echo.
echo.
echo.
echo Bitte Das Datum der Bilderserie eingeben:
set /p Tag=Tag (zweistellig)
set /p Monat=Monat (zweistellig)
set /p Jahr=Jahr (vierstellig) 
jhead.exe -ts%Jahr%:%Monat%:%Tag%-00:00:00 *.jpg
jhead.exe -ts%Jahr%:%Monat%:%Tag%-00:00:00 *.jpeg

REM Das DIR-Kommando gibt die Dateien in der gewünschten Folge zurück
FOR /F "usebackq tokens=*" %%i IN (`DIR *.jpg /A:-D /B`) DO @set bildername=%%i & @CALL :loopbody

REM Und das Ganze noch einmal falls die Bilderserie aus *.JPEG-Dateien besteht
FOR /F "usebackq tokens=*" %%i IN (`DIR *.jpeg /A:-D /B`) DO @set bildername=%%i & @CALL :loopbody
del jhead.exe
cd ..

REM Nach Durchlauf zum Ende springen und die BATCH-Datei beenden
GOTO :EOF

REM Hier ist die Extra-Schleife, die die eigentliche Arbeit erledigt.
:loopbody

REM Es wird lediglich die Zehner-Stelle der Sekunden hochgezählt, Das Programm verarbeitet auch Werte über 60 im Sekunden-Feld korrekt
jhead -ta+0:00:%sek%0 "%bildername%"
set /a sek=sek+1

/edit
Jetzt wird das Ziel-Datum abgefragt und nicht einfach durch ein festes ersetzt. Mehr mache ich wohl bei dieser Batch nicht, für meine Zwecke reicht es.
 
Zuletzt bearbeitet:
Zurück
Oben