ImageMagick裁剪图像与周围的背景

时间:2015-03-31 18:48:34

标签: php imagemagick crop

我正在使用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大于原始图像的宽度和高度,则将其向下推入图像的视图中)。

e.g。 Cropping Image using a front end tool. As you can see the crop tool is over the image The result for the cropped image pushes the image back into view. I dont want this! I want a background

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

更新

感谢namelivia建议我决定使用"范围" 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)。

1 个答案:

答案 0 :(得分:2)

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