SAK 図書館
CGI-Perl 基礎実地編 - 実習14 (画像レスポンス、画像出力、画像表示)
■test14.cgi ------ ↓ ここから ↓ ------ #!/usr/local/bin/perl #// 準備 $fname = 'test.gif'; $imgtype = 'gif'; $cufld = '.'; $dbfld = '/w_test/'; $path = $ENV{'PATH_INFO'}; #// 動作環境セット if (($i = index($path, $dbfld)) != -1) { $cufld = '..' . substr($path, $i, $i + length($dbfld) - 1); } #// 画像オープン open(IMG, "$cufld/$fname") or die; #// イメージ表示 binmode IMG; binmode STDOUT; print "Content-type: image/$imgtype\n\n"; print while (<IMG>); #// 画像クローズ close(IMG); #// 終了 exit(0); ------ ↑ ここまで ↑ ------ ■解説 ・この test14.cgi は、カレントフォルダにある test.gif をブラウザに 表示します。 $fname = 'test.gif'; |_ 画像ファイル名 $imgtype = 'gif'; |_ 画像タイプ (.jpg or .jpeg は、必ず 'jpeg' と指定) binmode IMG; |_ IMG ファイルハンドルをバイナリモードでアクセスする binmode STDOUT; |_ STDOUT つまり、ブラウザレスポンスをバイナリモードにする print "Content-type: image/$imgtype\n\n"; | |_ イメージタイプに gif を指定 |_ レスポンスレッダにイメージを指定 print while (<IMG>); |_ IMG ファイルハンドルの最後までを読んで標準出力に書き出す (標準出力は STDOUT。つまり、ブラウザ。) ■補足 ・画像ファイルに MAC バイナリヘッダ(128 byte) が含まれているとダメ です。事前にカットしておきましょう。 ■実地 ・test14.cgi も実際に作成してテストしてみましょう。 画像ファイルを jpeg にしても試してみましょう。 ■CGI-Perl 基礎実地編資料
■CGI-Perl 基礎編資料
■CGI-Perl 応用実地編資料
■PHP 基礎編資料
■PHP + MySQL 編資料