【php】画像の解像度を変更する
問題
phpで画像の加工がしたい。画像の解像度(dpi)を変更したい。

答え
Imagick::setImageResolution でできるようだ。
似たものに Imagick::setResolution もあるので、紛らわしい。
出力するところも含めるとコードはこんな感じ。
header('Content-Type: image/jpeg');
$im = new Imagick();
$im->readImage('test.jpg');
$im->setImageResolution(72, 72); // 72dpiに
$im->setImageFormat("jpg");
echo $im;
pngは事情が特殊で、dpiで解像度を持っていなくて端数が出るとかで、あえて0を指定すると指定なし、単位なし → フォトショップ等では72dpi扱い としてもらえたりする。
header('Content-Type: image/png');
$im = new Imagick();
$im->readImage($blob);
$im->setImageResolution(0, 0); //指定なし → 72 Undefined
$im->setImageFormat("png");
echo $im;