sroller

Annotate picture with ImageMagick

Mar 22nd, 2020
858
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.32 KB | None | 0 0
  1. #!/usr/bin/env perl
  2.  
  3. use Image::ExifTool ':Public';
  4. use Data::Dumper;
  5.  
  6. # DOW algorithm from Sakamoto https://en.wikipedia.org/wiki/Determination_of_the_day_of_the_week
  7.  
  8. sub dow($$$) {
  9.   local ($d, $m, $y) = @_;
  10.   my @wochentag = qw/Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag/;
  11.   my @t = (0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4);
  12.   if ($m < 3) {
  13.     $y = $y-1;
  14.   }
  15.   $i = $m - 1;
  16.   return $wochentag[($y + int($y/4) - int($y/100) + int($y/400) + $t[$i] + $d) % 7];
  17. }
  18.  
  19. @monat = qw/null Januar Februar März April Mai Juni Juli August September Oktober November Dezember/;
  20.  
  21. $file = $ARGV[0];
  22. $target = $ARGV[1];
  23.  
  24. if (! -f $file) { die "$file: file not found"; }
  25. if (! -d $target) { die "$target: directory not found"; }
  26.  
  27. $img = ImageInfo($file);
  28. ($londeg, $lonmin, $lonref) = $img->{'GPSLongitude'} =~ m/(\d+) deg (\d+)'[^NESW]+(.)/;
  29. ($latdeg, $latmin, $latref) = $img->{'GPSLatitude'} =~ m/(\d+) deg (\d+)'[^NESW]+(.)/;
  30. ($y, $m , $d, $H, $M, $S) = $img->{'DateTimeOriginal'} =~ m/(\d{4}):(\d{2}):(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
  31. $datum = dow($d, $m, $y) . ", $d. $monat[$m] $y $H:$M";
  32. $pos = "$latdeg°$latmin'$latref $londeg°$lonmin'$lonref";
  33.  
  34. $rc = `convert -verbose $file -font \"PragmataProMono\" -gravity North -pointsize 24 -fill White -annotate +12+12 \"$datum ($pos)\" $target/$file`;
  35.  
  36. exit($?);
Advertisement