#!/usr/bin/env perl use Image::ExifTool ':Public'; use Data::Dumper; # DOW algorithm from Sakamoto https://en.wikipedia.org/wiki/Determination_of_the_day_of_the_week sub dow($$$) { local ($d, $m, $y) = @_; my @wochentag = qw/Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag/; my @t = (0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4); if ($m < 3) { $y = $y-1; } $i = $m - 1; return $wochentag[($y + int($y/4) - int($y/100) + int($y/400) + $t[$i] + $d) % 7]; } @monat = qw/null Januar Februar März April Mai Juni Juli August September Oktober November Dezember/; $file = $ARGV[0]; $target = $ARGV[1]; if (! -f $file) { die "$file: file not found"; } if (! -d $target) { die "$target: directory not found"; } $img = ImageInfo($file); ($londeg, $lonmin, $lonref) = $img->{'GPSLongitude'} =~ m/(\d+) deg (\d+)'[^NESW]+(.)/; ($latdeg, $latmin, $latref) = $img->{'GPSLatitude'} =~ m/(\d+) deg (\d+)'[^NESW]+(.)/; ($y, $m , $d, $H, $M, $S) = $img->{'DateTimeOriginal'} =~ m/(\d{4}):(\d{2}):(\d{2}) (\d{2}):(\d{2}):(\d{2})/; $datum = dow($d, $m, $y) . ", $d. $monat[$m] $y $H:$M"; $pos = "$latdeg°$latmin'$latref $londeg°$lonmin'$lonref"; $rc = `convert -verbose $file -font \"PragmataProMono\" -gravity North -pointsize 24 -fill White -annotate +12+12 \"$datum ($pos)\" $target/$file`; exit($?);