PHPでJPEG画像をPNG画像に変換する

(1/1)
GD ライブラリを使うと、画像のフォーマットを変換することができる。そこで、クライアント PC にある JPEG画像ファイルを PNG画像ファイルに変換するプログラムを作ってみることにする。

サンプル・プログラム

PHP で GD ライブラリが有効になっていることが必要だ。
あらかじめ関数  phpinfo  を実行し、GD Support が enable になっていることを確認すること。

プログラムを実行する

ダウンロード(PHP4/5共用)

サンプル・プログラムの解説:画像ファイルのアップロード

0027: <form method="post" enctype="multipart/form-data" action="$MySelf">
0028: JPEGファイル:
0029: <input name="image" type="file" size="50" /> 
0030: <input type="submit" name="exec" value="変換" /> 
0031: <input type="reset"  name="reset" value="リセット" />
0032: </form>

画像ファイルは <input type="file"> タグで選択させる。
画像ファイルをサーバに送信するために、<form> タグに enctype="multipart/form-data" を付ける必要がある。

サンプル・プログラムの解説:画像フォーマット変換

0039:     if (function_exists('imagecreatefromjpeg')) {
0040:         $sour = $_FILES['image']['tmp_name'];
0041:         $img = @imagecreatefromjpeg($sour);
0042:         if (! $img) {
0043:             $errmsg = $_FILES['image']['name'] . ' はJPEG画像ファイルではありません';
0044:         } else {
0045:             $errmsg = NULL;
0046:             header("Content-Type: image/png");
0047:             header("Content-Disposition: attachment; filename=image.png");
0048:             imagepng($img);
0049:         }
0050:     } else {
0051:         $errmsg = 'GDライブラリがインストールされていません';
0052:     }

念のため、関数  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 では、この方法でブラウザに表示された画像ファイルを保存することができないようだ。

参考サイト

(この項おわり)
header