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 編資料