ImageMagick 裁剪具有周围背景的图像

ImageMagick crop Image with a surrounding background

我正在使用 imagemagick 裁剪图像(使用 PHP 界面,但我认为这无关紧要)。

我想裁剪图像,但如果裁剪部分超过图像,我希望它显示背景颜色。

这是我目前的代码:

$newImg = new Imagick($imgUrl);
$newImg->cropImage($cropW, $cropH, $x, $y);
$newImg->resizeImage($resizedW, $resizedH, Imagick::FILTER_CATROM, 1);
$newImg->writeImage($output_filename);

然而,由于某些原因,imagemagick 拒绝显示图像中超出图像边界的任何部分(即,如果 x 和 y 大于原始图像的宽度和高度,它会将其向下推到图片)。

例如

我想要这样,如果 x 和 y 超出图像部分,它会显示背景色。谢谢!

更新

感谢 namelivia 的建议,我决定使用 "extent" tool.However 我无法通过 PHP 使用此工具设置背景颜色。例如,以下会生成更大的图像,但背景为黑色,而不是紫色。

$newImg = new Imagick($imgUrl);
$newImg->setImageBackgroundColor('#e7609a'); //Doesn't return an error  (i.e. returns true) but also does not work! 
$newImg->setImageExtent(2000, 2000);
$newImg->writeImage($output_filename);

更新 2

如果您想使用背景颜色,您似乎应该使用 extentImage(而不是 setImageExtent)。

我认为你应该使用 the extent option first,使用范围你还可以为区域选择背景颜色 "behind" 然后你可以裁剪扩展图像。