【发布时间】:2015-06-05 05:43:58
【问题描述】:
我正在使用 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”工具。但是我无法通过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 (NOT setImageExtent)。
【问题讨论】:
-
为什么投反对票?我认为这是一个措辞恰当的问题,之前没有重复
标签: php imagemagick crop