Imagemagick convert -fill不会更改特定调色板区域的边缘

时间:2017-12-29 10:28:30

标签: php ffmpeg imagemagick imagemagick-convert

当我尝试使用以下命令

从此图像中删除Green (#09f80c)颜色时
magick convert images/img001.png - fill transparent -opaque #09f80c images/tp.png

我在图片下面:

Input Image

我得到的这张图片作为上述命令的输出。此图像边缘仍有一些绿点。如何完全删除它们?

Output Image

我希望转换的图像不要有那些额外的像素。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

在Imagemagick中,你可以像Andy建议的那样使用-fuzz。但是,在开始更改其他区域以及绿色之前,您只能增加模糊值。

首先测量颜色尽可能接近。我得到#2FF81D

这是关于此图像尽可能大的模糊值。但它外面还有一些绿色。 (Unix语法)

convert green.jpg -fuzz 35% -transparent "#2FF81D" green_trans1.png

enter image description here

为了进一步降低效果,您可以通过模糊一点并逐渐变细(通过-level)来消除透明区域的边界。

convert green.jpg -fuzz 35% -transparent "#2FF81D" -channel a -blur 0x3 -level 50x100% +channel green_trans2.png

enter image description here

答案 1 :(得分:0)

也许您应该尝试-fuzz参数,例如-fuzz 40%

我在这里的文档中找到了这个:

http://www.imagemagick.org/Usage/color_basics/#replace