#!/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(''); }