前までは大きい画像をそのままimgタグのwidth、height属性で縮小して表示していました。
しかし、これだとブラウザによっては汚い画像が表示されてしまいます。
また、サーバーからの転送量も大きくなります。(数十~数100KBの差ですが・・・)
そこで、サムネイルを作ることにしました。
しかし、一個ずつペイントやGIMPで手作業していたのでは時間が掛かり、めんどくさいです。
そこでどうするか。
まず、コマンドラインで画像の縮小ができるように、ImageMagickをインストールします。
参考:http://www.kkaneko.com/rinkou/cygwin/im ... mingw.html
ただし、ここの解説と違ってbinaryフォルダの中の無印のzipファイルを落としたらうまくいきました。
インストールといっても、解凍してパスを通すだけです。
ただし、パスは一番最後ではなく一番最初に追加しないとうまくconvertコマンドが使えません。
次に、HTMLのimgタグを読み取って自動処理できるように、Perlでプログラムを書きます。
まず、imgタグで埋め込んでいる画像の一覧を取得します。
#!/usr/bin/perl
while() {
$_ =~ s//&getimgdata($1)/ieg;
}
sub getimgdata {
local($thetext)=@_;
local($src,$alt,$width,$height)=("","","","");
$thetext =~ s/src=\"(.*?)\"/$src=$1/ie; # " =1?$ARGV[0]:"out");
unless(-d $outdir) {
if(-e $outdir) {
die("error: $outdirがすでに存在し、ディレクトリではありません。\n");
} else {
mkdir($outdir);
}
}
while() {
chomp($_);
@data=split(/\t/,$_);
$outfile=$data[0];
$outfile =~ s/^.*\///;
if($outdir ne ""){$outfile=$outdir."/".$outfile;}
system("convert -resize ".$data[2]."x".$data[3]."! ".$data[0]." ".$outfile);
print STDERR $outfile."\n";
}
この2個のプログラムをパイプで繋ぎ、一発で処理します。
すると、指定したフォルダにサムネイル画像が生成されるので、
HTMLのimgタグのsrcをテキストエディタの置換機能で書き換え、アップロードして完成です。