【问题标题】:ImageMagick crop Image with a surrounding backgroundImageMagick 裁剪带有周围背景的图像
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 谢谢!不知道该功能,但是您如何通过 PHP 设置背景颜色。我更新的代码不起作用。见问题。
  • 设法修复它。感谢您的帮助
  • 对于其他有此问题的人,我建议使用命令行工具而不是 PHP API,因为我相信它现在已被弃用。
猜你喜欢
  • 1970-01-01
  • 2019-07-19
  • 2019-03-10
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
相关资源
最近更新 更多