#!/usr/bin/perl # --------------------------------------------------------------------------- # PictIndex.pl 画像サムネイル・インデックス自動作成スクリプト 1.00 # --------------------------------------------------------------------------- # (c)2004 Pocketstudio(http://pocketstudio.jp/) # Masato Zembutsu zem@pocketstudio.jp # 配布条件・改良・二次利用については個別にメールでお問い合わせ下さい。 # --------------------------------------------------------------------------- # 2004/10/22 1.00 公開 use Image::Magick; $thmbdir = '_thumbnail'; $indexdir = 'index'; $index = 'index.html'; opendir(DIR, ".") or die "ERROR: cannot open dir $!"; open(INDEX,">./$index") or die "ERROR: cannot open a index file $index $!"; #@files = grep { /\.[jpg]$/i } readdir(DIR); @files = grep { /\.(jpg|gif|jpeg|png)$/i } readdir(DIR); die "ERROR: no target file." if(!@files); #@files = readdir(DIR); if (!opendir(THMB, "./$thmbdir")) { mkdir $thmbdir, 0777 or die "ERROR: cannot mkdir $thumbdir : $!"; } if (!opendir(THMB, "./$indexdir")) { mkdir $indexdir, 0777 or die "ERROR: cannot mkdir $indexdir : $!"; } print INDEX '',"\n"; print INDEX '',"\n"; print INDEX 'A photograph album',"\n"; print INDEX '',"\n"; print INDEX '',"\n"; print INDEX '',"\n"; print INDEX '',"\n"; print INDEX '',"\n"; @files = sort { $a cmp $b; } @files; print INDEX '
',"\n"; print INDEX '

A photograph album

',"\n"; print INDEX '',"\n"; foreach $file (@files) { $i++; print "[$i]"; $file{$i} = $file; if ($i%5 == 1) { print INDEX "\n"; } print "FILE = $file"; my $info0 = Image::Magick->Ping(filename=>"./$file"); my @info = split(/\,/,$info0); # print " ( @info )\n"; $width_org{$file} = $info[0]; $height_org{$file} = $info[1]; # $size{$file} = $info[2]; # $note{$file} = "( $width{$file} x $height{$file} : $size{$file} byte )"; $note{$file} = "($info[0]x$info[1] $info[2] byte)"; print " $note{$file} \t"; $image = Image::Magick->new; $status = $image->Read($file); warn "$status" if "$status"; $status = $image->Zoom('100'); warn "$status" if "$status"; $status = $image->Write("./$thmbdir/_$file"); warn "$status" if "$status"; if ($status) { print "FAIL $!"; } else { print "ok"; $info99 = Image::Magick->Ping(filename=>"./$thmbdir/_$file"); my @info99 = split(/\,/,$info99); $width{$file} = $info99[0]; $height{$file} = $info99[1]; #$size{$file} = $info99[2]; print " -> Resize $width{$file}x$height{$file}"; } print "\n"; # print INDEX "
  • [",$i,"] $file $note{$file}"; # print INDEX "
  • \n"; my $viewfile = "./$indexdir/$file.html"; # print INDEX "\n"; print INDEX "\n"; if ($i%5 == 0) { print INDEX "\n"; } undef $image; undef $status; } print INDEX '

    [",$i,"] $file
    $note{$file}

    [",$i,"] $file
    $note{$file}

    [",$i,"] $file

    $note{$file}
    ',"\n"; print INDEX '
    ',"\n"; close INDEX; ## 画像用ページ作成 $count = $i; print "\make index "; for ($i=1; $i <= $count; $i++) { # print "$i:$file{$i}\n"; print "."; my $file = $file{$i}; my $viewfile = "./$indexdir/$file.html"; open (VIEW,"> $viewfile") or die "ERROR: cannot open navigation file $viewfile : $!"; print VIEW '',"\n"; print VIEW '',"\n"; print VIEW '$file',"\n"; print VIEW '',"\n"; print VIEW '',"\n"; print VIEW '',"\n"; print VIEW '',"\n"; print VIEW '',"\n"; print VIEW '
    ',"\n"; print VIEW "

    [$i] $file $info{$file}

    ","\n"; print VIEW '
    '; print VIEW "
    ","\n"; print VIEW '
    '; print VIEW "$note{$file}\n"; print VIEW '',"\n"; print VIEW ""; my $next = $i+1; my $previous = $i-1; my $n_file = $file{$next}; my $p_file = $file{$previous}; print VIEW ""; print VIEW ""; print VIEW ""; print VIEW ""; print VIEW '
    "; print VIEW "<< PREVIOUS

    [",$previous,"] $file{$previous}
    " if ($previous); print VIEW "
    - INDEX -
    "; print VIEW "NEXT >>

    [",$next,"] $file{$next}
    " if($next <= $count); print VIEW "
    ',"\n"; print VIEW '
    ',"\n"; print VIEW '',"\n"; print VIEW '',"\n"; close(NAVI); } print "ok\ndone.\n\n"; exit;