画像を正方形にリサイズする場合、
正方形に切り抜く場合と、余分な背景をうめて正方形にする2パターンがある
<?php // 正方形に切り取る $im = new Imagick(); $im->readImage('/home/kasahi/tmp/org.jpg'); $im->cropThumbnailImage(80, 80); $im->writeImage('/home/kasahi/tmp/resize.jpg'); $im->destroy(); ?>
<?php // 余りの背景を白でうめて正方形にする場合 $im = new Imagick(); $im->readImage('/home/kasahi/tmp/org.jpg'); $sideNum = 300; // 一辺を300ピクセルにする $im->setImageBackgroundColor(new ImagickPixel('white')); if ($im->getImageWidth() > $im->getImageHeight()) { $im->scaleImage($sideNum, 0); $height = ($sideNum - $im->getImageHeight()) / 2; $im->spliceImage(0, $height, 0, 0); $im->spliceImage(0, $sideNum - $im->getImageHeight(), 0, $im->getImageHeight()); } else { $im->scaleImage(0, $sideNum); $width = ($sideNum - $im->getImageWidth()) / 2; $im->spliceImage($width, 0, 0, 0); $im->spliceImage($sideNum - $im->getImageWidth(), 0, $im->getImageWidth(), 0); } $im->writeImage('/home/kasahi/tmp/resize.jpg'); $im->destroy(); ?>