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

Fin*_*ish 2 php imagemagick

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

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

这有用的thumbnailImage()是创建一个200像素宽的缩略图,但trimImage()没有任何影响,留下与原始图像中相同数量的周围空白.

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

这是一个示例图像:

在此输入图像描述

Mar*_*ell 6

你需要补充一些fuzz到您的trimImage()

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

$im->trimImage(20000);
Run Code Online (Sandbox Code Playgroud)

对于这张图片来说,似乎大概有2000左右.它与Quantum Range相关,如果编译了ImageMagick,则为65,536 Q16.试试跑步:

identify | head -1
Run Code Online (Sandbox Code Playgroud)

看到你的量子大小,像这样:

Version: ImageMagick 6.8.9-8 Q16 x86_64 2014-12-04
Run Code Online (Sandbox Code Playgroud)

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

如果你想在终端/命令行进行实验,那么等效命令就是设置fuzz之前的运行trim,所以以下是相当于$im->trimImage(6553);

convert bike.jpg -fuzz 10% -trim out.jpg
Run Code Online (Sandbox Code Playgroud)