#!/usr/bin/perl # # imgindex.pl # # builds thumbnails and a "contact page" html file for all images # in a directory # #use Data::Dumper; $CONVERT="/usr/local/bin/convert"; $some_dir=`pwd`; chomp($some_dir); if ( -f "./index.html" ) { unlink("./index.html"); } if ( ! -d "./thumbnails" ) { mkdir("thumbnails") || die "Can't make thumbnails dir.\n"; } # how many times have I cut and pasted this code? opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!"; @dircontents = readdir(DIR); closedir DIR; @images = grep { ( /.jpg$/i || /.jpeg$/i || /.gif$/i || /.png$/i ) && -f "$some_dir/$_" } @dircontents; @movies = grep { ( /.mpg$/i || /.mpeg$/i || /.avi$/i || /.rm$/i || /.wmv$/i || /.asf$/i ) && -f "$some_dir/$_" } @dircontents; @subdirs = grep { /^[A-Za-z0-9]/ && -d "$some_dir/$_" && !/^thumbnails/ } @dircontents; @images = sort @images; @movies = sort @movies; @subdirs = sort @subdirs; #print STDOUT "subdirs: " . Dumper(@subdirs); $fileindex=1; $numfiles=scalar(@images); #print STDOUT "numfiles = $numfiles\n"; $tableindex=1; open(INDEXPAGE,">index.html"); print INDEXPAGE <images

Subdirs

EOF for my $dir (@subdirs) { print INDEXPAGE "$dir "; } print INDEXPAGE <Movies EOF for my $vid (@movies) { print INDEXPAGE "$vid "; } print INDEXPAGE <Images EOF for my $filename (@images) { if ( -d "thumbnails/thm_$filename" ) { next; } else { system("$CONVERT -size 100x100 $filename thumbnails/thm_$filename"); } $pagename="page.$filename.html"; print "filename = $filename\n"; print "pagename = $pagename\n"; print "fileindex = $fileindex\n"; if ( $fileindex == $numfiles ) { $nextfile="index.html"; print STDOUT "nextfile = index.html\n"; } else { $nextindex=$fileindex; $nextfile="page.$images[$nextindex].html"; print STDOUT "nextfile = $nextfile\n"; } if ( $fileindex == 1 ) { $prevfile="index.html"; print STDOUT "prevfile = index.html\n"; } else { $previndex=$fileindex - 2; $prevfile="page.$images[$previndex].html"; print STDOUT "prevfile = $prevfile\n"; } open(IMGPAGE,">$pagename"); print IMGPAGE <$filename PREV INDEX NEXT

EOF close(IMGPAGE); print INDEXPAGE< EOF if ( $tableindex > 3 ) { print INDEXPAGE< EOF $tableindex=0; } $tableindex++; $fileindex++; print STDOUT "\n"; } print INDEXPAGE < EOF exit 0;