ホーム管理専用(CGIメモ)≫CGI Perl メモ:画像

 

CGI Perl メモ:画像   100 / 5件中 ( 1 〜 5 )    1      【登録】 (制限あり)
▼ 最初に登録されたトピックス
CGI Perl メモ:画像ねっとまがじん 2009/12/08 14:48:19

CGI Perlでの画像処理についてのメモ(^.^)

▲ 最初に登録されたトピックス

 

5. 画像を保存する ねっとまがじん 2009/12/10 15:31:21

選択された画像を保存する例

$outfile = "./xxxxx"; # 保存するファイル名の設定
open(OUT,">$outfile") || &error("エラー:画像保存失敗!");
binmode(OUT);
binmode(STDOUT);
print OUT $i_upfile;
close(OUT);
chmod(0666,$outfile);

4. 画像が jpg かどうかのチェックねっとまがじん  2009/12/10 15:21:05

画像が選択されたどうかの判定

$i_upfile = $in{'upfile'}; # UPファイル
#--- 画像ファイルの有無チェック
if (length($i_upfile) == 0) {&error("エラー:画像が未選択です!");}

#--- 画像ファイルのチェック 受信データの Content-type 部分から拡張子を探す
foreach $tmp (@in) {
if ($tmp =~ /(.*)Content-type:(.*)/i) {
if ($2 =~ /image\/jpeg/i) { $ext = '.jpg'; }
elsif ($2 =~ /image\/pjpeg/i) { $ext = '.jpg'; }
elsif ($2 =~ /image\/gif/i) { $ext = '.gif'; }
elsif ($2 =~ /image\/png/i) { $ext = '.png'; }
else { $ext = 'NO'; }
}
}
if (($ext eq 'NO') || ($ext eq '')) {
&error("エラー:許可されていない画像形式です!");
}

※色々とやり方はあると思うが、作りはじめの頃に検索で見つけた方法を参考にしたもの。
※Image::Magick でも出来そうな感じがするが。。。

3. 画像が選択されたどうかの判定ねっとまがじん  2009/12/10 15:08:52

画像が選択されたどうかの判定

$i_upfile = $in{'upfile'}; # UPファイル

#--- 画像ファイルの有無チェック
if (length($i_upfile) == 0) {&error("エラー:画像が未選択です!");}

※色々とやり方はあると思う・・・(^_^;)
※&error は内部サブルーチンとして作ったもので、エラー表示用のHTMLを作成するもの。

2. 画像フォーム読込みは &ReadParse を使うねっとまがじん  2009/12/09 14:41:45

フォーム読込みは &ReadParse を使う
require './cgi-lib.pl';

#--- 読込みは &ReadParse を使う
&ReadParse; # require './cgi-lib.pl';

#--- チェックは以下のように
$in{'upfile'}; # upfile はフォームで記述した name である

■cgi-lib.pl の入手先 2007年2月時点
The cgi-lib.pl Home Page
 http://cgi-lib.berkeley.edu/
Version 2.18 is the latest released version of cgi-lib.pl. の個所。先頭「Version 2.18」リンク指定されている。
これを、cgi-lib.pl として保存する。この中に「&ReadParse」もある。

【注意点】
cgi-lib.pl の内容を修正する。他はいじるな(^_^;)
少々大きな画像のときエラーが出たので、ここかと思い修正したらOKとなった。(^_^;)
cgi-lib.pl の $cgi_lib'maxdata の値を変える。(21行目)画像読込みバッファだと思う。

$cgi_lib'maxdata = 131072;

$cgi_lib'maxdata = 500000;

※画像読込みでそれらしいエラーが出たら値を変えて試してみる。
プログラムでも画像の大きさのチェックは必要である。(^.^)

1. 画像選択フォームねっとまがじん  2009/12/08 14:52:35

フォームに以下を記述。
form ENCTYPE="multipart/form-data"
input type="file"

 

CGI Perl メモ:画像   100 / 5件中 ( 1 〜 5 )    1      【登録】 (制限あり)

 


ホーム