#!/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 " [",$i,"] $file $note{$file} | \n";
my $viewfile = "./$indexdir/$file.html";
# print INDEX " [",$i,"] $file $note{$file} | \n";
print INDEX " [",$i,"] $file $note{$file} | \n";
if ($i%5 == 0) {
print INDEX "
\n";
}
undef $image;
undef $status;
}
print INDEX '
',"\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 '',"\n";
print VIEW '',"\n";
print VIEW '',"\n";
close(NAVI);
}
print "ok\ndone.\n\n";
exit;