ImageMagick - 去除黑边

4

我有大约100张扫描的图片(.jpg),所有图片都有黑色边框(顶部/右侧/底部/左侧),就像这样:

input.jpg

我希望能自动裁剪我的图片,使其没有任何黑边框。
我尝试了不同的代码,使用这段代码获得了最佳结果(我使用的是Windows版Imagemagick 7.0.7-Q16):
magick mogrify -bordercolor black -fuzz 20% -trim -format jpg *.jpg

它生成了这张图片:

我的代码结果

这是一个不错的开始,但是你仍然可以看到图像顶部、右侧、底部和左侧仍有黑色边框,以及天空中的两个黑色区域。

我希望这张图片看起来像这样:

期望的结果

我该怎么做呢?

任何对我的问题的帮助或提示将不胜感激!提前致谢!


你尝试增加“fuzz value”值了吗? - fmw42
3个回答

6

在 ImageMagick 7.0.8.30 或更高版本中,现在可以使用“aggressive trim”来消除(大多数)黑色。对于一张图片,我通常只会使用 magick 命令,但为了演示目的,在这里我使用 magick mogrify 命令。

输入:

输入图片描述

magick mogrify -fuzz 4% -define trim:percent-background=0% -trim +repage -format jpg img.jpg

在此输入图片描述

根据需要调整模糊值。但是如果设置得过大,图像将被过度裁剪。

请参见https://imagemagick.org/discourse-server/viewtopic.php?f=4&t=35579


2

仅通过该命令,您无法始终清除所有黑色背景,特别是如果图像稍微旋转。您可能需要在四周刮掉一些,但没有简单的方法可以知道需要刮多少。此外,您在ImageMagick修剪命令中指定的背景颜色没有影响。

尝试

magick mogrify -fuzz 20% -trim +repage -shave 7x7 -format jpg *.jpg

根据需要调整剃须量。


0
另一种可能性是使用 floodfill ,例如:
convert sample-in.jpg \
    -alpha set -fill none -fuzz 5% \
    -draw "color 0,0 floodfill" \
    sample-out.webp
  • 启用透明度
  • floodfill 使像素在距离黑色像素5%的范围内变为透明,从0,0开始填充

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接