我正在使用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。
我想要它,如果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)。