【问题标题】:Trimming extra white background from image using ImageMagick in PHP在 PHP 中使用 ImageMagick 从图像中修剪额外的白色背景
【发布时间】:2014-12-08 23:10:00
【问题描述】:

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

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

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

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

这是一个示例图像:

【问题讨论】:

标签: php imagemagick


【解决方案1】:

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

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

$im->trimImage(20000);

这张图片看起来 2,000 左右就足够了。如果你的 ImageMagick 是用Q16 编译的,它是相对于 65,536 的 Quantum Range 而言的。尝试运行:

identify | head -1

查看您的 Quantum Size,如下所示:

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

【讨论】:

  • 谢谢。我尝试更改修剪图像值,但显然我没有将其设置得足够高以工作。
  • 我犯了同样的错误,但我已经学会了狠狠地抨击这些东西,直到我知道它们在做什么,然后在必要时退出!祝你好运!
猜你喜欢
  • 1970-01-01
  • 2011-04-09
  • 2012-12-15
  • 2012-09-07
  • 2018-07-01
  • 2018-03-25
  • 2015-08-16
  • 2010-11-02
相关资源
最近更新 更多