From 1b0fd8048f11cfa99660819822cad6bff5ce4238 Mon Sep 17 00:00:00 2001
From: Eugene Crosser <crosser@average.org>
Date: Mon, 12 Jan 2009 19:12:45 +0000
Subject: [PATCH] google maps link for geotagged photos

---
 include/gallery.css    |  13 +++++++++++++
 include/smallglobe.png | Bin 0 -> 445 bytes
 mkgallery.pl           |  33 +++++++++++++++++++++++++++------
 3 files changed, 40 insertions(+), 6 deletions(-)
 create mode 100644 include/smallglobe.png

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 0000000000000000000000000000000000000000..0f135ffe14bafb1bfa0814dc26807923c948849a
GIT binary patch
literal 445
zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xamSQK*5Dp-y;YjHK@;M7UB8!1^
zDF`z@KE$31WJs2{MwA5Sr<If^7Ns(jmzV2h=4BTrCl;jY<rk&TerF@az`$tb>Ealo
zF){a&q4ym}0oD)q<=Pi4c)`BGV4IVdwKl7xXKH?-fJ;tLB+Hfl#B@y##z5|ab{VRR
zDkdZ>R1^@pc$r!BNlf?b?*E7XA2_t(^Sv{-=c+$nQ*6*-`p4lI_qoS;8@Qttd>@Lx
zyXeHcf3c%-R&cC~4_kt{hp9}GZ2ZTT{KlC)eRVNO#wxLjq8)n|CMg<Bf3ZG+(>CIW
zdd^cn?<aHQHwte(dO$DKpzrUT&$?~_-|b#WaGtR{CM@^SSmoRU>wk$%<rW7G?2`E9
z4Wcwl-k$JQ6%Jnb&wkrR!SlP0JwL&}QSK+#Ii>pt%2?fJ_-XP!WJ*>QK3*U=<K=^r
zwaJq80bjTEG1?@=CCXl%Q*696<S^r}ExF&98sv(epK)}~w(41_)3P(Fw{-6RsA+ym
lCp_uXWrghpYmPiw-?4F<QR_REN?=ekc)I$ztaD0e0s!-HuR{O;

literal 0
HcmV?d00001

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'};
-- 
2.43.0