diff options
-rwxr-xr-x | generate_gallery.pl | 61 | ||||
-rwxr-xr-x | generate_gallery.sh | 54 |
2 files changed, 61 insertions, 54 deletions
diff --git a/generate_gallery.pl b/generate_gallery.pl new file mode 100755 index 0000000..64c9d6b --- /dev/null +++ b/generate_gallery.pl @@ -0,0 +1,61 @@ +#!/usr/bin/perl +use warnings; +use strict; +use Image::ExifTool qw(ImageInfo); +use File::Basename; +use Cwd qw(cwd abs_path); +use File::MimeInfo qw(mimetype); +use Image::Magick; + +if (@ARGV == 0) { + print "usage: ".basename($0)." <directory>..."; + exit 0; +} + +my $templatedir = abs_path(dirname($0))."/generate_gallery.d"; + +my $startdir = cwd(); + +for my $dir (@ARGV) { + chdir $startdir; + unless (-d $dir) { + print "Argument is not a directory: $dir. Ignoring.\n"; + next; + } + my $abs_dir = abs_path $dir; + chdir $abs_dir; + mkdir "thumbs" unless -d "thumbs"; + my $html; + + for my $file (glob("*")) { + unless (mimetype($file) =~ /^image\/.*/) { + print "ignoring non-image: $dir/$file\n"; + next; + } + + unless ( -e "$abs_dir/thumbs/$file") { + print "processing $dir/$file ...\n"; + my $img = new Image::Magick; + $img->Read("$abs_dir/$file"); + $img->Thumbnail(geometry=>"200x200"); + $img->Write("$abs_dir/thumbs/$file"); + } + $html .= "<div class=\"thumbnail\">\n"; + my $tags = ImageInfo($file, "Aperture", "ShutterSpeed", "FocalLength"); + $html .= "<a rel=\"images\" class=\"thumbnail\" title=\"".$tags->{ShutterSpeed}.", ".$tags->{FocalLength}." @ F ".$tags->{Aperture}."\" href=\"$file\">\n"; + $html .= "<img class=\"thumbnail\" alt=\"\" src=\"thumbs/$file\" />\n"; + $html .= "</a>\n</div>\n"; + } + open TEMPLATE, "<", "$templatedir/template.html"; + open OUTPUT, ">", "$abs_dir/index.html"; + while (<TEMPLATE>) { + if (/%%CONTENT%%/) { + print OUTPUT $html; + } else { + print OUTPUT $_; + } + } + close TEMPLATE; + close OUTPUT; + system "cp", "-r", "$templatedir/fancybox", "."; +} diff --git a/generate_gallery.sh b/generate_gallery.sh deleted file mode 100755 index 6efed92..0000000 --- a/generate_gallery.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -#---------------------------------------------------- -# Version: 0.3.0 -# Author: Florian "Bluewind" Pritz <flo@xssn.at> -# -# Licensed under WTFPL v2 -# (see COPYING for full license text) -# -#---------------------------------------------------- -# put images in folder "foo" and run "$0 foo" -#---------------------------------------------------- - -startdir="$PWD" -datadir="$(dirname "$0")/generate_gallery.d" - -html_template="$datadir/template.html" - -tempfile=$(mktemp "/tmp/image-gallery.XXXXXX") - -for i in "$@"; do - pushd "$i" &>/dev/null - echo > $tempfile - for img in *; do - filename="$(basename "$img")" - pushd "$(dirname "$img")" &>/dev/null - mkdir -p thumbs - if file -b --mime-type "$img" | grep -q "image/.*"; then - if [ ! -e "thumbs/$filename" ]; then - echo "processing: $i/$img" - convert "$filename" -thumbnail 200x200 "thumbs/$filename" - fi - fnumber=$(exiftool -s -s -s -FNumber $filename) - focallength=$(exiftool -s -s -s -FocalLength $filename) - shutterspeed=$(exiftool -s -s -s -ShutterSpeed $filename) - echo "<div class=\"thumbnail\">" \ - "<a rel=\"images\" class=\"thumbnail\" title=\"${shutterspeed}s, $focallength @ F $fnumber\" href=\"$img\">" \ - "<img class=\"thumbnail\" alt=\"\" src=\"thumbs/$img\" />" \ - "</a>" \ - "</div>" | sed -r 's/\/\//\//g' >> $tempfile - else - echo "ignoring non-image: $i/$img" - fi - popd &>/dev/null - done - cd "$startdir" - sed -r \ - -e "/%%CONTENT%%/r $tempfile" \ - -e '/%%CONTENT/d' \ - "$html_template" > "$i/index.html" - cp -r "$datadir/fancybox" "$i" - popd &>/dev/null -done - -rm $tempfile |