From 46d3b5eb00f5ad4541f10597c0188dd7ad9b0d20 Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Mon, 29 Nov 2010 17:17:03 +0100 Subject: rewrite in perl for speed Signed-off-by: Florian Pritz --- generate_gallery.pl | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++ generate_gallery.sh | 54 ----------------------------------------------- 2 files changed, 61 insertions(+), 54 deletions(-) create mode 100755 generate_gallery.pl delete mode 100755 generate_gallery.sh 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)." ..."; + 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 .= "
\n"; + my $tags = ImageInfo($file, "Aperture", "ShutterSpeed", "FocalLength"); + $html .= "{ShutterSpeed}.", ".$tags->{FocalLength}." @ F ".$tags->{Aperture}."\" href=\"$file\">\n"; + $html .= "\"\"\n"; + $html .= "\n
\n"; + } + open TEMPLATE, "<", "$templatedir/template.html"; + open OUTPUT, ">", "$abs_dir/index.html"; + while (