サンプル・プログラムの実行例
サンプル・プログラム
jpg2png.php | サンプル・プログラム本体 |
準備
解説:画像ファイルの変換
0220: //JPEG→PNG変換
0221: if (function_exists('imagecreatefromjpeg')) {
0222: if ($fname != '') {
0223: $img = @imagecreatefromjpeg($fname);
0224: if (! $img) {
0225: $errmsg = '"' . $_FILES['upload']['name'] . '" はJPEG画像ファイルではありません';
0226: } else {
0227: $errmsg = '';
0228: header("Content-Type: image/png");
0229: header("Content-Disposition: attachment; filename=image.png");
0230: imagepng($img);
0231: exit(0);
0232: }
0233: }
0234: } else {
0235: $errmsg = 'GDライブラリが実装されていません';
0236: }
0237:
0238: //表示HTML作成
念のため、組込み関数 function_exists を使い、GDライブラリがインストールされている――関数 imagecreatefromjpeg が存在する――ことをチェックしておく。
画像ファイルがサーバにアップロードされたかどうかは、変数 $_FILES["image"] の有無で場合分けする。
アップロードされた画像ファイルはテンポラリ・ファイル $_FILES["image"]["tmp_name"] に格納されている。
このファイルからGD関数 imagecreatefromjpeg によってGDイメージストリームを生成する。指定した画像ファイルがJPEGでなければ関数 imagecreatefromjpeg は 0 を返すので、エラーメッセージを変数 $errmsg に設定する。
GDイメージストリームが生成されたら、関数 imagepng を使って PNG イメージとしてブラウザに表示させる。
さらに、保存ファイル名を指定してブラウザから保存できるようにするため、header("Content-Disposition: attachment; filename=image.png") を追加した。
この行を無効にすると、PNG画像としてブラウザ上に表示される。ところが、Microsoft の IE 7 では、この方法でブラウザに表示された画像ファイルを保存することができないようだ。
画像ファイルがサーバにアップロードされたかどうかは、変数 $_FILES["image"] の有無で場合分けする。
アップロードされた画像ファイルはテンポラリ・ファイル $_FILES["image"]["tmp_name"] に格納されている。
このファイルからGD関数 imagecreatefromjpeg によってGDイメージストリームを生成する。指定した画像ファイルがJPEGでなければ関数 imagecreatefromjpeg は 0 を返すので、エラーメッセージを変数 $errmsg に設定する。
GDイメージストリームが生成されたら、関数 imagepng を使って PNG イメージとしてブラウザに表示させる。
さらに、保存ファイル名を指定してブラウザから保存できるようにするため、header("Content-Disposition: attachment; filename=image.png") を追加した。
この行を無効にすると、PNG画像としてブラウザ上に表示される。ところが、Microsoft の IE 7 では、この方法でブラウザに表示された画像ファイルを保存することができないようだ。
参考サイト
- GDライブラリのインストール:phpspot
(この項おわり)
(2022年2月27日) PHP8対応,大幅改訂