如何在 ImageMagick 中将白色背景色替换为图像的透明



我在.jpg format有一张带有white background color的图像。我想在Imagemagick中删除白色背景颜色以透明。我尝试了很多方法,但仍然无法去除白色背景。有人可以帮助我解决这个问题吗?

JPEG 中不能有透明的背景色。JPEG 文件格式不支持透明度。

如果需要透明背景,则需要将JPEG转换为

  • PNG(高质量,文件大小可能大于JPEG)
  • 或 GIF(以防您可以容忍低质量和最多 255 种颜色的范围)。

示例命令:

convert  your.jpg  -transparent white  your.png

首先,您需要将图像格式从.jpg转换为.png格式,因为 JPEG 不支持透明度。然后使用以下命令:

convert image1.png -fuzz 20% -transparent white result.png

-fuzz选项允许将纯白色的指定百分比偏差转换为透明。例如,当您的图像包含杂色或细微渐变时,这很有用。

我刚刚发现了一个非常整洁的东西!

magicwand 1,1 -t 20 -f image -r outside -m overlay -o 0 image.jpg imgOutput.png

这是一个Fred Weinhaus bash脚本,可以从这里下载(仅用于非商业用途)。还有大约250个脚本!!这个太神奇了!它完全可以解决问题,在保持内部图像点不变的同时删除所有背景!

在他的页面上,有几个图像作为示例,因此您可以选择需要放在命令行上的内容!

初始位置1,1是一个一般的猜测者,说所有的轮廓都是背景。

注意输出必须".png"

这是我

没有魔杖的解决方案(将 magick 替换为 im <7.0 的 convert):

magick img.png -fuzz 20% -fill none -draw "alpha 1x1 floodfill" result.png

自动获取背景并将其删除:

bg=$(convert input.png -format "%[pixel:p{0,0}]" info:)
convert input.png -fuzz 20% -transparent "$bg" output.png

最新更新