#!/usr/local/bin/perl # new and improved pixdir! thumbnails are bigger, now automatically # included dark background HTML page w/popups on click for high-contrast, # easy viewing, automatic rebuilding of out-of-date thumbnails, image # optimization, and more! =) $|=1; sub go($){ my ($cmd) = @_; print $cmd; `$cmd`; print "\n"; } sub convfiles{ my($dir,@files) = @_; foreach $file (sort @files){ my ($dest) = $file =~ /^.*\/(.*?)$/; $dest = $file if(!$dest); print $file." [dir $dir dest $dest]\n"; my $ftime = (stat($file))[9]; unless((-e "$dir/.thumb/$dest") && (((stat(_))[9]) >= $ftime)){ go "convert $file -quality 80 -geometry 300x300 $dir/.thumb/$dest"; go "jhead -da $dir/.thumb/$dest"; } unless((-e "$dir/.thumb-small/$dest") && (((stat(_))[9]) >= $ftime)){ go "convert $file -quality 50 -geometry 133x100 $dir/.thumb-small/$dest"; go "jhead -da $dir/.thumb-small/$dest"; } unless((-e "$dir/.full/$dest") && (((stat(_))[9]) > $ftime)){ go "convert $file -quality 80 -geometry 700x700 $dir/.full/$dest"; } } } sub convdir($){ my ($dir) = @_; my ($subdir,@dlist,@files,@dirs,$index); print STDERR "in $dir (given @_)\n"; # $dir =~ s/^\.\///; opendir(DIR, $dir) || die "couldn't open directory $dir: $!"; $dir =~ s/\/$//; # nuke trailing slash @dlist = map { $dir."/".$_ } grep { !/^\./ } readdir(DIR); closedir(DIR); @files = map { /^(?:\.\/)?(.*)$/ } grep { -f $_ && /\.jpe?g$/i} @dlist; @dirs = grep { -d $_ } @dlist; # recurse! if($#dirs >= 0){ print STDERR "recursing into @dirs\n"; foreach $subdir (@dirs) { convdir($subdir); } print STDERR "done!\n"; } # do the little index if(-x $dir."/index.php"){ unlink($dir."/index.php"); } if(-x $dir."/index.php3"){ unlink($dir."/index.php3"); } open(INDEX,">".$dir."/index.php"); # insert header print INDEX q{ david's pictures --[ <?=$title?> ]

david.weekly.org / pictures /

"; fpassthru($fp); print ""; } ?>
}; # spit out thumbnails & links $index=0; print INDEX ""; foreach $file (sort @files){ if($index%5 == 0){ print INDEX "" unless($index==0); print INDEX ""; } my($printfile) = $file =~ m|([^\/]+)$|; print INDEX "\n"; $index++; } print INDEX "
\n"; # insert tail if(-e "/tmp/index-tail.inc"){ local $/; open(TAIL,"; close(TAIL); print INDEX $tail; } else { print INDEX q{
all pictures are © copyright 2001 david e. weekly
}; } close(INDEX); # do the actual thumbnail conversions mkdir($dir."/.thumb") unless(-e $dir."/.thumb"); mkdir($dir."/.thumb-small") unless(-e $dir."/.thumb-small"); mkdir($dir."/.full") unless(-e $dir."/.full"); convfiles($dir,@files); } #convdir($_) foreach(@ARGV); convdir("."); 1;