Thread Bilder - Aufnahmezeitpunkt schreiben
(19 answers)
Opened by jan99 at 2015-05-25 11:40 Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 use strict; use warnings; use 5.010; my $DEBUG; use Time::Piece; use Time::Seconds; my $zeit_differenz = +2; # 2 Sekunden my $start_datum; my $first = 1; my $t; for my $fn (<00*.jpg>) { # hole alle Dateien per glob if ($first) { $start_datum = get_exif_date($fn); # hole Datum der ersten Datei! $DEBUG && say "EXIF date: $start_datum"; $t = Time::Piece->strptime($start_datum, '%Y:%m:%d %H:%M:%S'); # Datum in internes Time::Piece $DEBUG && say "Time::Piece date: ".$t->ymd(":")." ".$t->hms; $first = 0; next; } $t += $zeit_differenz; # nächsten Zeitpunkt setzen my $date = $t->ymd(":")." ".$t->hms; # Datumszeichenkette bauen $DEBUG && say "Next date: $date"; change_exif_date($fn, $date); # neues EXIF-Datum in Datei setzen } use Image::ExifTool; sub change_exif_date { my $file_name = shift; my $date = shift; my $exifTool = Image::ExifTool->new; my $info = $exifTool->SetNewValuesFromFile($file_name); # Original EXIF-Daten holen $exifTool->SetNewValue(DateTimeOriginal => $date); # Originaldatum (EXIF-Tag DateTimeOriginal) setzen $exifTool->SetNewValue(CreateDate => $date); # Erzeugungsdatum (EXIF-Tag CreateDate) setzen my $success = $exifTool->WriteInfo($file_name); # EXIF-Daten zurückschreiben return $success; } sub get_exif_date { my $file_name = shift; my $exifTool = Image::ExifTool->new; my $info = $exifTool->ImageInfo($file_name); # Exif-Daten aus Datei auslesen my $date = $exifTool->GetValue("CreateDate"); # EXIF-Tag CreateDate auslesen return $date; } |