ImageMagickを使ってBloqでサムネイルを表示させる。
サーバにImageMagickが既にインストール済みなら画像を縮少表示(画像が大きいと縮少しても時間がかかります)ではなく小さいサムネイル画像を画像アップ時に作りそれを表示することが可能です。
以下は改造にあたりますので自己責任で行ってください。m(_ _)m
以下は変更箇所(行数はズレてる可能性があります Bloqのver.は2.50)
★blogディレクトリに「tn」ディレクトリを作成
blog
┗img
┗data
┗tn
という感じになります。 パーミッションは777
★setup.cgiの
18行辺りに
$LongSide = 120;
サムネイル長辺のピクセル数です。 i-modeで見られるようにするなら60でもいいかな
ウチでは画像がある程度分かるように150にしています。
47行辺りに
# 内部から見た配置設定です。(相対パス指定)
$img_dir = './img/';
$tn_dir = './tn/';
#【イメージ記録用フォルダの設定】
#
# ウェブページ上の配置指定です。(仮想パス指定)
$img_url = '/~user/cgi/blog/img/';
$tn_url = '/~user/cgi/blog/tn/';
という様に赤の3行を書き足します。 (~userは自分の場合に置き換えてください)
★cgi-lib217.plが大きな画像を載せられる(転送できる)ように
21行を
$cgi_lib'maxdata = 5000000;
のように書き換えます。 例だと5MBまで転送可。*
★blog.cgiの
15行に
use Image::Magick;
52行に
if ($ENV{'CONTENT_LENGTH'} > 5000000) { &error("エラー","大き過ぎるファイルを受信しました。->
$ENV{'CONTENT_LENGTH'} bytes"); }
上の*と同じ数値を書きます。
2775行辺り(次の項目を変更すると行数がずれるのでこっちが先)
function Img() {
var val = opener.Form.body.value;
var str = "$img_url$filename$fext";
var tnf = "$tn_url$filename$fext";
opener.Form.body.value = val + '<a href="' + str + "\\" onClick=\\"openWin(640,480,'img')\\" target=\\"img\\"><img src=\\"" + tnf + '" width="120" border="0" alt="$filename" style="float:
left; margin: 0px 5px 5px 0px;" /></a>';
と書き換え&1行書き足します。
もし、サムネイルの長辺を120より大きくした場合はwidth="120"もその長辺の値にしましょう(お好みで)
2764行辺りを
chmod(0666,"$img_dir$filename$fext");
}
の2行の間に
chmod(0666,"$img_dir$filename$fext");
####ImageMagick処理
my $ofile = "$img_dir$filename$fext";
# オブジェクト作成
my $simage = Image::Magick->new;
# 画像読み込み
$simage->Read($ofile);
my ( $width, $height ) = $simage->Get( 'width', 'height' );
if($width >= $height){
$ScaleMinify = $width;
}else{
$ScaleMinify = $height;
}
$ScaleMinify = $LongSide / $ScaleMinify;
$width *= $ScaleMinify;
$height *= $ScaleMinify;
$simage->Sample(width=>$width,height=>$height);
$simage->Write("$tn_dir$filename$fext");
undef $simage;
chmod(0666,"$tn_dir$filename$fext");
}
と19行書き足します。
これで画像をアップすると自動的に長辺が120($LongSideで変更可能)のサムネイルを作りtnに保存、ブログ上の表示はサムネイルになります。 クリックによって元画像を表示できます。元画像は大きくても大丈夫。