X-Git-Url: http://www.average.org/gitweb/?p=mkgallery.git;a=blobdiff_plain;f=mkgallery.pl;h=0d649c05f194872a85e745a37fb7b7ca4ce32578;hp=0e3423c761b18b693895752ff9fa1b7cb240f2b4;hb=b39075695e95b6668e5d3c149bb179dbe9a65f3e;hpb=93b575d6b3d8d6f9a38e25e70c21fdcfa43c4755 diff --git a/mkgallery.pl b/mkgallery.pl index 0e3423c..0d649c0 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"; @@ -117,7 +120,6 @@ sub new { $class = $this; my $root=shift; $self = { - -depth=>0, -root=>$root, -fullpath=>$root, }; @@ -159,6 +161,7 @@ sub initpaths { $pos=index($inc,'/',$pos+1)) { $dp++; } + $self->{-depth} = $dp; for ($pos=length($fullpath);$dp>0 && $pos>0; $pos=rindex($fullpath,'/',$pos-1)) { $dp--; @@ -174,6 +177,7 @@ sub initpaths { $self->{-inc} = 'NO-.INCLUDE-IN-PATH/'; # won't work anyway $self->{-rss} = ''; $self->{-relpath} = ''; + $self->{-depth} = 0; } } @@ -365,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") && @@ -432,6 +446,7 @@ sub edittitle { my $title; my $T; if (open($T,'<'.$fullpath.'/.title')) { + binmode($T, ":utf8"); $title = <$T>; $title =~ s/[\r\n]*$//; close($T); @@ -598,6 +613,7 @@ sub makeaux { warn "cannot open \"$fn\": $!"; return; } + binmode($F, ":utf8"); my $imgsrc = sprintf("../.%s/%s",$sizes[0],$name); print $F start_html(-title=>$title, -encoding=>"utf-8", @@ -681,6 +697,9 @@ sub startindex { ); print $IND eval $prm,"\n"; } else { + print STDERR "could not open ", + $self->{-toppath}.'/'.$incdir.'/header.pl', + " ($!), reverting to default header"; print $IND a({-href=>"../index.html"},"UP"),"\n", h1({-class=>'title'},$title),"\n", } @@ -705,6 +724,10 @@ sub endindex { -breadcrumbs => "breadcrumbs unimplemented", ); print $IND eval $prm,"\n"; + } else { + print STDERR "could not open ", + $self->{-toppath}.'/'.$incdir.'/footer.pl', + " ($!), reverting to default empty footer"; } print $IND end_html,"\n"; @@ -776,20 +799,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'},"")),"\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'};