読者です 読者をやめる 読者になる 読者になる

YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

画像サイズ・形式の変更

PHP

PHPで画像をアップロードするだけならmove_uploaded_fileで簡単にできるんだけど、画像サイズを変更したり、画像形式を変更したりするにはちょっと手間が必要。
GDライブラリを使えるなら*1imagecreatefromjpegとか、そういう一連のimage関数を使えばいいわけなんだけど、使えないとなると途端に無理になってしまう。そこで次の手としてImageMagickを使う方法がある。
PECLとかPEARとか言ったライブラリにいろいろそれを扱う関数があるようだけど、たいしたことをしないから直接system関数でconvertとかを呼び出しちゃえばいい。たとえばこんな感じ。

list($org_width, $org_height) = getimagesize($org_image);
$scale = min(1,min($max_width/$org_width, $max_height/$max_height));
$width = $org_width*$scale;
$height = $org_height*$scale;
system("convert -geometry {$width}x{$height} $tmp_name $image");

ImageMagickの諸々のオプションはここを参考にするといいっぽい。

*1:gd_infoの結果を見て何も出なければたぶんだめ。php_infoで確認してConfigure Commandに--with-gdとかがあれば大丈夫。