今回UPした画像のリサイズと画像に文字を乗っけるという仕様の仕事があり、PHPで画像加工に挑戦しました。
調べてみるとPHPを入れるときに大体標準で付いてくるGDライブラリで画像加工が出来るとのこと。
今回は画像を小さくリサイズするのと、写真に文字を埋め込むという事をしました。
ソースは次のようになりました。
$upload_path = "アップロードしたいディレクトリ"; //まず元画像となる写真を上げます。 if (!move_uploaded_file($_FILES["Filedata"]["tmp_name"], $upload_path . "picture.jpeg")) { header("HTTP/1.0 500 Internal Server Error"); die; } //元画像の写真のサイズを取得します。 list($width,$height)=getimagesize($upload_path . "picture.jpeg"); //元画像のJPEGファイルを読み込んでおきます。 $src=@imagecreatefromjpeg($upload_path . "picture.jpeg"); //縦横比で写真の大きさを決めます if ($width>$height){ $new_width = 600; $rate = $new_width / $width; //圧縮比 $new_height = $rate * $height; }else{ $new_height = 400; $rate = $new_height / $height; //圧縮比 $new_width = $rate * $width; } //縦横比で新たなキャンパスサイズを決定して空の画像を作ります。 $dst=imagecreatetruecolor($new_width, $new_height); //新しい画像に元の画像をコピーします。 imagecopyresampled($dst,$src,0,0,0,0,$new_width,$new_height,$width,$height); //出す文字のフォントが置いているパスを指定します。今回はIPAゴシックを使用 $fontPath = "ipagp.otf"; //フォントの色を指定します $fontColor = ImageColorAllocate($dst, 0, 0, 0); //フォントと色と出す文字(今回はテストという文字)を写真に埋め込みます。 ImageTTFText($dst, 20, 0, 10, 30, $fontColor, $fontPath, 'テスト'); //ファイルに保存します。第3引数の数字はクオリティーなので好みの数値を0?100で入れる。 imagejpeg($dst, $upload_path . "picture_m.jpeg", 80); //メモリから画像を開放しておく。 imagedestroy($dst);
こんな感じで画像の加工が出来ました。
今回使用したIPAフォントは次の所から落としてきて、パスで指定したところに置いておきます。
http://ossipedia.ipa.go.jp/ipafont/