#!/usr/bin/perl
use strict;
#########################################################
#しらぎくさいと実験室 #
#画像変換バイナリ検索スクリプト 第0.920版#
#########################################################
#平成19年 5月13日 しらぎくさいと #
#Copyright (c)2007 MINOBE Hiroyuki, Saitama, JAPAN.#
#Copyright (c)2007 Marguerite Site, Saitama, JAPAN.#
# www.marguerite.jp #
#########################################################
use vars qw(
@paths $answer $path $magick $pbm
);
my ($i, $j, $answer2);
#検索対象となるパス。
if (($i=$ENV{'PATH'})=~/\A[a-zA-Z]:\\/) { @paths=split(/;/,$ENV{'PATH'}); }
else { @paths=split(/:/,$ENV{'PATH'}); }
#イメージマジックは使えるか?
$magick=0;
$answer="
イメージマジック。
\n";
eval { require Image::Magick; };
if (!$@) { $answer.="お使いの環境はイメージマジックに対応しております。
\n"; ++$magick; }
else { $answer.="お使いの環境はイメージマジックには対応しておりません。
\n"; }
#NetPBMの主要なコマンドは使えるか?
#ウィンドウズ以外のOSである事が条件。
$answer.="NetPBM。
\n";
eval {
$i=`perl -v`;
$j=&search('perl');
$i=`$j/perl -v` if !$i;
};
if (!($i=~/MSWin32-/)) {
$pbm=1;
#GIF関連。
$path='';
$answer2="\n\t- GIF画像
\n";
$i=&search('giftopnm');
if ($i ne '') { $answer2.="\t- 読込: 可/"; $path=$i; }
else { $answer2.="\t
- 読込: 不可/"; $pbm=0; }
if ($path eq '') { $i=&search('ppmtogif') || &search('pamtogif'); }
else { $i=((-e "$path/ppmtogif") || (-e "$path/pamtogif")) && $path; }
if ($i) { $answer2.="書出: 可
\n\n"; $path=$i; }
else { $answer2.="書出: 不可 \n\n"; $pbm=0; }
#JPEG関連。
$answer2.="\t- JPEG画像
\n";
if ($path eq '') { $i=&search('djpeg') || &search('jpegtopnm'); }
else { $i=((-e "$path/djpeg") || (-e "$path/jpegtopnm")) && $path; }
if ($i) { $answer2.="\t- 読込: 可/"; $path=$i; }
else { $answer2.="\t
- 読込: 不可/"; $pbm=0; }
if ($path eq '') { $i=&search('cjpeg') || &search('pnmtojpeg'); }
else { $i=((-e "$path/cjpeg") || (-e "$path/pnmtojpeg")) && $path; }
if ($i) { $answer2.="書出: 可
\n\n"; $path=$i; }
else { $answer2.="書出: 不可 \n\n"; $pbm=0; }
#ビットマップ関連。
$answer2.="\t- ビットマップ
\n";
if ($path eq '') { $i=&search('ppmtobmp'); }
else { $i=(-e "$path/ppmtobmp") && $path; }
if ($i) { $answer2.="\t- BMP : 書出可
\n"; $path=$i; }
else { $answer2.="\t- BMP : 書出不可
\n"; $pbm=0; }
if ($path eq '') { $i=&search('pbmtowbmp'); }
else { $i=(-e "$path/pbmtowbmp") && $path; }
if ($i) { $answer2.="\t- WBMP: 書出可
\n\n"; $path=$i; }
else { $answer2.="\t- WBMP: 書出不可
\n\n"; $pbm=0; }
#PNG関連。
$answer2.="\t- PNG画像
\n";
if ($path eq '') { $i=&search('pngtopnm'); }
else { $i=(-e "$path/pngtopnm") && $path; }
if ($i) { $answer2.="\t- 読込: 可/"; $path=$i; }
else { $answer2.="\t
- 読込: 不可/"; $pbm=0; }
if ($path eq '') { $i=&search('pnmtopng'); }
else { $i=(-e "$path/pnmtopng") && $path; }
if ($i) { $answer2.="書出: 可
\n\n"; $path=$i; }
else { $answer2.="書出: 不可 \n\n"; $pbm=0; }
#処理関連。
$answer2.="\t- 画像処理
\n";
if ($path eq '') { $i=&search('pnmscale') || &search('pamscale'); }
else { $i=((-e "$path/pnmscale") || (-e "$path/pamscale")) && $path; }
if ($i) { $answer2.="\t- 縮小: 可
\n"; $path=$i; }
else { $answer2.="\t- 縮小: 不可
\n"; $pbm=0; }
if ($path eq '') { $i=&search('pnmquant') || &search('pamquant'); }
else { $i=((-e "$path/pnmquant") || (-e "$path/pamquant")) && $path; }
if ($i) { $answer2.="\t- 減色: 可
\n\n"; $path=$i; }
else { $answer2.="\t- 減色: 不可
\n\n"; $pbm=0; }
if ($path eq '') { $i=&search('ppmtopgm') && &search('pgmtopbm'); }
else { $i=(-e "$path/ppmtopgm") && (-e "$path/pgmtopbm") && $path; }
if ($i) { $answer2.="\t- 白黒: 可
\n\n"; $path=$i; }
else { $answer2.="\t- 白黒: 不可
\n\n"; $pbm=0; }
#結論。
$answer2.="\t
\n";
if ($pbm) {
$answer.=<お使いの環境ではNetPBMが利用出来ます。
NetPBMへのパスは $path/ です。
NetPBMの詳細。
$answer2
ED
}
else {
$answer.="お使いの環境ではNetPBMは利用出来ません。
\n";
$answer.="NetPBMへのパスは $path/ ですが、一部実装されていないものがあります。\n" if $path ne '';
$answer.=$answer2;
}
}
else {
$answer.="
お使いの環境はウィンドウズのため、NetPBMは利用出来ません。
\n";
$pbm=0;
}
#結論。
if (!$magick && !$pbm) {
eval { require Compress::Zlib; };
$i='';
if ($@) { $i="Zlibも使えないため、PNG画像の扱いにも制限が加わります。
"; }
$answer=<お使いの環境では利用出来る画像に大きな制限が加わります。
$i
『しらぎくさいと実験室』の作品をご利用になるのであれば、サーヴァの変更を強く推奨致します。
$answer
ED
}
else {
$answer=<お使いのサーヴァは以下のような環境となっております。
$answer
ED
}
$answer=<
お使いのサーヴァの画像処理環境。
お使いのサーヴァの画像処理環境。
$answer
Copyright (c)平成19年 さいたま・しらぎくさいと 版権所有
ED
binmode(STDOUT);
print "content-type: text/html;charset=shift_jis\ncontent-length: ",length($answer),"\n\n$answer";
exit();
#検索。
sub search {
my $n=$_[0];
my ($i);
foreach $i (@paths) {
return($i) if (-e "$i/$n");
}
return('');
}