サンプル・プログラムの実行例

サンプル・プログラム
imgconvert.php | サンプル・プログラム本体 |
準備:GDライブラリ
解説:変換テーブル
36: //変換テーブル
37: $ConvertInfoTable = array(
38: //画像形式: from=>読み込み関数, to=>書き出し関数, id=>ID名
39: IMAGETYPE_BMP => array('from'=>'imagecreatefrombmp', 'to'=>'imagebmp', 'id'=>'BMP'),
40: IMAGETYPE_GIF => array('from'=>'imagecreatefromgif', 'to'=>'imagegif', 'id'=>'GIF'),
41: IMAGETYPE_JPEG => array('from'=>'imagecreatefromjpeg', 'to'=>'imagejpeg', 'id'=>'JPEG'),
42: IMAGETYPE_PNG => array('from'=>'imagecreatefrompng', 'to'=>'imagepng', 'id'=>'PNG'),
43: IMAGETYPE_WEBP => array('from'=>'imagecreatefromwebp', 'to'=>'imagewebp', 'id'=>'WEBP'),
44: );
45:
46: //デフォルトの変換形式
47: define('DEF_TO', 'WEBP');
解説:画像ファイルの変換
249: //画像形式変換
250: if ($fname != '') {
251: //画像形式の判定
252: $imagetype = exif_imagetype($fname);
253: if (isset($ConvertInfoTable[$imagetype])) {
254: if (function_exists($ConvertInfoTable[$imagetype]['from'])) {
255: //画像読み込み
256: $img = $ConvertInfoTable[$imagetype]['from']($fname);
257: if (! $img) {
258: $errmsg = '"' . $_FILES['upload']['name'] . '" は' . $ConvertInfoTable[$imagetype]['id'] . '画像ファイルではありません';
259: }
260: } else {
261: $errmsg = $ConvertInfoTable[$imagetype]['id'] . '画像ファイルを読み込むことができません(GDライブラリをインストールしてください)';
262: }
263: } else {
264: $errmsg = '"' . $_FILES['upload']['name'] . '" は読み込み可能な画像ファイルではありません';
265: }
266: //画像書き出し
267: if ($to != '') {
268: foreach($ConvertInfoTable as $arr) {
269: if ($to == $arr['id']) {
270: if (function_exists($arr['to'])) {
271: $ext = strtolower($to);
272: header('Content-Type: image/' . $ext);
273: header('Content-Disposition: attachment; filename=image.' . $ext);
274: $arr['to']($img);
275: exit(0);
276: } else {
277: $errmsg = $to . '画像ファイルに変換できません(GDライブラリをインストールしてください)';
278: }
279: } else {
280: $errmsg = $to . '画像ファイルに変換できません';
281: }
282: }
283: }
284: }
285:
286: //表示HTML作成
念のため、組込み関数 function_exists を使って、当該関数が存在しているかどうかを逐次チェックする。
あとは、「PHPでJPEG画像をPNG画像に変換する」と同様の流れである。
参考サイト
- PHPでJPEG画像をPNG画像に変換する:ぱふぅ家のホームページ