Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/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($?);
Advertisement