YAMAGUCHI::weblog

海水パンツとゴーグルで、巨万の富を築きました。カリブの怪物、フリーアルバイター瞳です。

画像サイズ・形式の変更

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とかがあれば大丈夫。