使用 ImageMagick 删除白色背景但不删除内部图片的白色?

Jon*_*yen 5 imagemagick image-processing imagemagick-convert

我正在尝试通过批处理删除电子商务网站产品图片中的背景。

问题是该脚本还删除了产品内部的白色,使产品在某些区域保持透明。

例如:

在此输入图像描述

命令:

convert *.jpg  -set filename: %t -fuzz 5% -transparent white %[filename:].png
Run Code Online (Sandbox Code Playgroud)

这是我能得到的最好的结果……我对产品的这个结果感到满意,但我需要产品内部的白色保持白色而不是透明的。

在此输入图像描述

Mar*_*ell 2

当前方法的问题在于它不尊重边界,它只是全局应用,使所有白色像素透明,无论它们与背景的连接如何。

相反,您会更好地使用“洪水填充”,该“洪水填充”仅淹没左上角像素模糊距离内的区域。

所以,我选择了一种未使用的洋红色,这样你就可以看到发生了什么:

convert product.jpg -fuzz 5% -fill magenta -draw 'color 0,0 floodfill' result.png
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然后,您可以按照以下命令使洋红色透明,如下所示:

convert product.jpg -fuzz 5% -fill magenta -draw 'color 0,0 floodfill' -transparent magenta result.png
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述