使用ImageMagick将白色背景变为透明

4

我有大约2700张图片需要进行以下操作:

  • 转换为.png格式
  • 将白色背景变为透明

为了完成这些操作,我使用Homebrew下载了ImageMagick,并在相关目录中运行了以下命令:

find . -type f -name "*.jpg" -print0 | while IFS= read -r -d $'\0' file; do convert -verbose "$file" -transparent white "$file.png"; done

这个方法起作用,但是图片周围仍有几个白点,如下图所示。 对于米白色瓶子来说,这更难了,因为它也使一些瓶子变成透明的!在Photoshop中,您可以调整“MagicWand”的“容差”以确保不会发生这种情况,但我不知道如何使用ImageMagick做到这一点,也找不到谷歌上的任何信息。 带有白色细边的图像示例 有人能帮忙吗? 有没有办法使用ImageMagick来处理这个问题?是否有更好的方法处理这2700张图像以去除白色背景?
谢谢
A

1
你可以尝试允许一些“模糊”... convert bottle.png -fuzz 10% -transparent white result.png - Mark Setchell
实际上,您想要使用与Gimp的Color-to-alpha相当的功能,它可以将边缘上的灰色像素转换为部分透明像素。Magick中没有这样的操作符,但存在一个很好的近似值,请参见此处。 - xenoid
1个回答

2

在ImageMagick中使用-fuzz选项

$ convert img.jpg -fuzz 32% -transparent #ffffff out.png

这将允许您调整容差值。希望这有所帮助。

谢谢Nipunasudha。这确实有帮助!但是,对于与白色类似的瓶子,它会使一些瓶子变成透明的。有没有办法可以避免这种情况发生? - Elfordy
这里的问题是,每张照片都不同,只有你知道主题是什么。我认为除非你训练一个机器学习模型来检测主题,否则没有干净的方法可以解决这个问题。我也是一名平面设计师,即使手动操作,从瓶子中删除背景并使其透明而不失去细节也不容易。 - nipunasudha

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