#!/usr/bin/perl
# Install ffmpeg, ufraw, ImageMagick
print "Thumnailer, pix2tn\n\n";
my $filename = 'index.html';
$start_dir = shift || '.';
use File::Find::Rule;
# find all the .pm files in @INC
my @files = File::Find::Rule->file()
->name( '*.jpg', '*.avi', '*.raw', '*.cr2', '*.jpeg', '*.nef', '*.mov')
->in( @INC );
@nfiles = grep(!/AppleDouble/, @files);
my $tnperrow=4; # thumbnails per row
my $tnsize=200; # size of thumbnails
my $tnquality=40; # quality of thumbnails [0..100]
# use small thumbnails with poor quality to speed up your index-page
if (-e $filename) {
rename $filename, $filename.".bak";
print "I saved the old $filename as $filename.bak\n";
}
open (PAGE, ">$filename") || die "Problem: Can't write to filename\n";
# create a directory for the thumbnails
system ("mkdir tn") if (!-d "tn");
#system ("mkdir med") if (!-d "med");
# create the index page
print PAGE qq*
$title
$title
*;
my $counter=0;
foreach $_ (@nfiles) {
$in = $_;
$out = $_;
$out =~ s/\//-/g;
$out =~ s/\.avi$/.jpg/g;
$out =~ s/\.cr2/.jpg/g;
$out =~ s/\.nef/.jpg/g;
$out =~ s/\.mov/.jpg/g;
print $in;
if ($in =~ /\.avi$/) {
system ('convert', '-resize', $tnsize."x".$tnsize, '-quality', $tnquality, $in.'[1]', 'tn/'.$out) == 0
|| die "Problems with convert: $?\n";
#system ('convert', '-geometry', $medsize."x".$medsize, '-quality', $medquality, $in.'[1]', 'med/'.$out) == 0
#|| die "Problems with convert: $?\n";
} elsif ($in =~ /\.mov/) {
system ('convert', '-resize', $tnsize."x".$tnsize, '-quality', $tnquality, $in.'[1]', 'tn/'.$out) == 0
|| die "Problems with convert: $?\n";
} else {
system ('convert', '-resize', $tnsize."x".$tnsize, '-quality', $tnquality, $in, 'tn/'.$out) == 0
|| die "Problems with convert: $?\n";
}
print PAGE "" if (!($counter++%$tnperrow));
print PAGE "";
#
@stat = stat $_;
print PAGE qq*
*;
if ($in =~ /\.avi$/) {
print PAGE "AVI ";
} elsif ($in =~ /\.mov/) {
print PAGE "MOV ";
} elsif ($in =~ /\.cr2/) {
print PAGE "CR2 (RAW) ";
} elsif ($in =~ /\.jpg/) {
print PAGE "JPG ";
}
print PAGE qq*
$_ *.
localtime($stat[9]). .
qq*\n*;
print " ... done\n";
}
print PAGE qq*
|
Index created on *. localtime(time) .qq*
*;
close PAGE;
exit;