【PHP】画像ファイルのリサイズをする関数の作成
今回は、PHPで画像ファイルのリサイズを行う関数を作成してみます。
前提条件とやりたいこと
プログラム
<?php function image_resize($width_resized, $origin_path, $imagefile, $resize_path){ /** width_resized:リサイズ後の画像ファイルの横幅 orgin_path:リサイズする元画像ファイルのパス imagefile:画像ファイル名 resize_path:リサイズ済みの画像ファイルの保存先パス **/ //元の画像情報(横幅、縦、拡張子)を取得 list($width_origin, $height_origin, $type) = getimagesize($origin_path.$imagefile); //画像を加工前にフォーマットごとに書き出し switch ($type) { case IMAGETYPE_JPEG: $image_origin = imagecreatefromjpeg($origin_path.$imagefile); break; case IMAGETYPE_PNG: $image_origin = imagecreatefrompng($origin_path.$imagefile); break; default: throw new RuntimeException('対応していないファイル形式です。: ', $type);//jpg、png以外は処理中止 } /** アスペクト比を固定して、リサイズ後の縦の長さを算出 リサイズ後の横幅は、function image_resizeを実行時に引数として指定済み **/ $height_resized = ($height_origin / $width_origin) * $width_resized; // 新しく描画するキャンバスを作成 $canvas = imagecreatetruecolor($width_resized, $height_resized); //$canvasオブジェクトに画像をリサイズしてコピー imagecopyresampled($canvas, $image_origin,0,0,0,0, $width_resized, $height_resized, $width_origin, $height_origin); //$canbasオブジェクトを$resize_pathに出力 switch ($type) { case IMAGETYPE_JPEG: imagejpeg($canvas, $resize_path.$imagefile); break; case IMAGETYPE_PNG: imagepng($canvas, $resize_path.$imagefile); break; } // 読み出したファイルは消去 imagedestroy($image_origin); imagedestroy($canvas); } ?>
結果
これで、画像ファイルをリサイズする関数が完成しました。
次回は、この関数を使って、ファイル名で2種類に分類された画像ファイル群を、それぞれ別のサイズにリサイズするという処理を行いたいと思います。
それでは!