画像を正方形にリサイズする場合、
正方形に切り抜く場合と、余分な背景をうめて正方形にする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();
?>
