From: Eugene Crosser Date: Mon, 12 Jan 2009 19:12:45 +0000 (+0000) Subject: google maps link for geotagged photos X-Git-Tag: 2.01~5 X-Git-Url: http://www.average.org/gitweb/?p=mkgallery.git;a=commitdiff_plain;h=1b0fd8048f11cfa99660819822cad6bff5ce4238 google maps link for geotagged photos --- diff --git a/include/gallery.css b/include/gallery.css index 44e360d..96800a8 100644 --- a/include/gallery.css +++ b/include/gallery.css @@ -292,3 +292,16 @@ table.picframe { color: #FFF; text-align: left; } + +div.slideimage { + position: relative; +} + +div.geoloc { + position: absolute; + right: 0px; + top: 0px; + width: 14px; + height: 14px; + background: url(smallglobe.png) no-repeat; +} diff --git a/include/smallglobe.png b/include/smallglobe.png new file mode 100644 index 0000000..0f135ff Binary files /dev/null and b/include/smallglobe.png differ diff --git a/mkgallery.pl b/mkgallery.pl index 747cb6c..bcd6a00 100755 --- a/mkgallery.pl +++ b/mkgallery.pl @@ -35,7 +35,7 @@ use Image::Info qw/image_info dim/; use Term::ReadLine; use Getopt::Long; use Encode; -use encoding 'utf-8'; +#use encoding 'utf-8'; binmode(STDOUT, ":utf8"); my $haveimagick = eval { require Image::Magick; }; @@ -44,6 +44,9 @@ my $haveimagick = eval { require Image::Magick; }; my $haverssxml = eval { require XML::RSS; }; { package XML::RSS; } # to make perl compiler happy +my $havegeoloc = eval { require Image::ExifTool::Location; }; +{ package Image::ExifTool::Location; } # to make perl compiler happy + my @sizes = (160, 640, 1600); my $incdir = ".gallery2"; @@ -366,6 +369,16 @@ sub isimg { my $self = shift; my $fullpath = $self->{-fullpath}; return 0 unless ( -f $fullpath ); + + if ($havegeoloc) { + my $exif = new Image::ExifTool; + $exif->ExtractInfo($fullpath); + my ($la,$lo) = $exif->GetLocation(); + if ($la && $lo) { + $self->{-geoloc} = [$la,$lo]; + } + } + my $info = image_info($fullpath); if (my $error = $info->{error}) { if (($error !~ "Unrecognized file format") && @@ -785,20 +798,28 @@ sub img_entry { $self->{-parent}->{-numofimgs}++; print $IND a({-name=>$name}),"\n", - start_table({-class=>'slide'}),start_Tr,start_td,"\n", - div({-class=>'slidetitle'}, + start_table({-class=>'slide'}),start_Tr,start_td,"\n"; + print $IND div({-class=>'slidetitle'}, "\n ",a({-href=>".html/$name-info.html", -title=>'Image Info: '.$name, -class=>'infoBox'}, $title),"\n"),"\n", - div({-class=>'slideimage'}, - "\n ",a({-href=>".html/$name-static.html", + start_div({-class=>'slideimage'}); + if ($self->{-geoloc}) { + my ($la,$lo) = @{$self->{-geoloc}}; + print $IND a({-href=>"http://maps.google.com/". + "?q=$la,$lo&ll=$la,$lo", + -title=>"$la,$lo", + -class=>'geoloc'}, + div({-class=>'geoloc'},"G")),"\n"; + } + print $IND a({-href=>".html/$name-static.html", -title=>$title, -class=>'showImage', -rel=>'i'.$name}, img({-src=>$thumb, -class=>'thumbnail', - -alt=>$title})),"\n"),"\n", + -alt=>$title})),"\n",end_div, start_div({-class=>'varimages',-id=>'i'.$name,-title=>$title}),"\n"; foreach my $sz(@sizes) { my $src=$self->{$sz}->{'url'};