我有一系列图像,我使用PHP ImageMagick转换为缩略图。图像是纯白色背景上的产品的JPEG文件。图像周围的白色空间不均匀,所以我想要削掉额外的背景。这是我尝试过的:
$im = new Imagick($imgurl);
$im->trimImage(0);
$im->thumbnailImage(200,0);
$im->writeImage("thumb/".$imgurl);
就thumbnailImage()
而言创建宽度为200像素的缩略图时,这是有效的,但trimImage()
没有任何影响,只留下与原始相同数量的周围空白图像。
任何人都可以建议我哪里出错或者我怎么做到这一点。我了解imagemagick
trimImage()
可以使用模糊,但我找不到如何使用模糊的好例子。
以下是示例图片:
答案 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