使用ImageMagick在PHP中修剪额外的白色背景

时间:2014-12-08 10:37:06

标签: php imagemagick

我有一系列图像,我使用PHP ImageMagick转换为缩略图。图像是纯白色背景上的产品的JPEG文件。图像周围的白色空间不均匀,所以我想要削掉额外的背景。这是我尝试过的:

$im = new Imagick($imgurl);
$im->trimImage(0);
$im->thumbnailImage(200,0);
$im->writeImage("thumb/".$imgurl);

thumbnailImage()而言创建宽度为200像素的缩略图时,这是有效的,但trimImage()没有任何影响,只留下与原始相同数量的周围空白图像。

任何人都可以建议我哪里出错或者我怎么做到这一点。我了解imagemagick trimImage()可以使用模糊,但我找不到如何使用模糊的好例子。

以下是示例图片:

enter image description here

1 个答案:

答案 0 :(得分:5)

您需要在fuzz

中添加一些trimImage()

我做了一个非常快速的实验,有效:

$im->trimImage(20000);

对于这张图片来说,似乎大概有2000左右。如果你的ImageMagick是用Q16编译的,它相对于量子范围是65,536。尝试运行:

identify | head -1

查看您的量子大小,如下所示:

Version: ImageMagick 6.8.9-8 Q16 x86_64 2014-12-04

如果您想在PHP代码中获取Quantum Range,请使用此function,然后您可以将其表示为百分比,以防您使用ImageMagick的Q8或Q32版本。

如果要在终端/命令行进行试验,则等效命令是在运行fuzz之前设置trim,因此以下等同于$im->trimImage(6553);

convert bike.jpg -fuzz 10% -trim out.jpg