gpt4 book ai didi

php - 在 PHP 中使用 ImageMagick 从图像中修剪多余的白色背景

转载 作者:行者123 更新时间:2023-12-04 00:31:13 28 4
gpt4 key购买 nike

我有一系列图像,我正在使用 PHP ImageMagick 将其转换为缩略图。这些图像是纯白色背景上产品的 JPEG 文件。图片周围的空白不均匀,所以我想剪掉多余的背景。这是我尝试过的:

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

thumbnailImage() 而言,它可以创建一个 200 像素宽的缩略图,但 trimImage() 没有任何效果让我与原始图像中相同数量的周围空白。

任何人都可以建议我哪里出了问题,或者我还可以如何实现这一点。我知道 imagemagick trimImage() 可以使用 fuzz,但我找不到一个很好的例子来说明如何使用它。

这是一个示例图片:

enter image description here

最佳答案

您需要在 trimImage() 中添加一些 fuzz

我做了一个非常快速的实验,效果很好:

$im->trimImage(20000);

这张图片似乎 2,000 左右就足够了。如果您的 ImageMagick 使用 Q16 编译,它是相对于 65,536 的 Quantum Range。尝试运行:

identify | head -1

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

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

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

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

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

关于php - 在 PHP 中使用 ImageMagick 从图像中修剪多余的白色背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27356055/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com