我想要更改我的图片背景颜色,这是我的源文件http://cdn.mayike.com/emotion/img/attached/1/image/dt/20170916/18/20170916180007_833.png。
如果我想把背景颜色改成另一种颜色,我应该怎么做?
如果我想将背景颜色改为透明,我应该怎么做?
我尝试使用convert aa.png -background '#0e0e0e' bb.png
,但这并不起作用。
我想要更改我的图片背景颜色,这是我的源文件http://cdn.mayike.com/emotion/img/attached/1/image/dt/20170916/18/20170916180007_833.png。
如果我想把背景颜色改成另一种颜色,我应该怎么做?
如果我想将背景颜色改为透明,我应该怎么做?
我尝试使用convert aa.png -background '#0e0e0e' bb.png
,但这并不起作用。
我认为由于您的图像不是二进制的,您可能无法得到完美的结果。但在Imagemagick中,您有两个选择。首先,您可以将所有白色改为红色:
convert 20170916180007_833.png.jpeg -fuzz 25% -fill red -opaque white -flatten result1.png
或者您可以进行洪水填充,只更改外部区域:
convert 20170916180007_833.png.jpeg -fuzz 25% -fill none -draw "matte 0,0 floodfill" -background red -flatten result2.jpg
为了应用任何背景颜色,首先程序需要知道边缘和背景。
您使用的图像没有做到这一点。
虽然您的命令是正确的,但由于没有区分边缘和背景,因此它不起作用。所以我们先使用遮罩。
首先运行以下命令获取边缘:
convert aa.png -bordercolor white -border 1x1 \
-alpha set -channel RGBA -fuzz 20% \
-fill none -floodfill +0+0 white \
-shave 1x1 aa.png
现在你会在aa.png文件中获得保存的边缘。此时您的背景是透明的。接下来运行更改背景颜色的命令:
convert aa.png -background blue -flatten bb.png
现在您将获得预期结果。
输出最终图像
来源:http://www.imagemagick.org/Usage/masking/#bg_remove通常只需要使用-opaque
或-transparent
,但由于图像是黑白的,我们需要隔离ROI以起到效果。我建议使用MVG绘图命令。
如果更改为其他颜色,我该怎么做?
convert 20170916180007_833.png \
-fill '#0e0e0e' -fuzz 20% \
-draw 'color 0,0 floodfill' \
output_color.png
convert 20170916180007_833.png \
-fill 'transparent' -fuzz 20% \
-draw 'color 0,0 floodfill' \
output_transparent.png
convert original.png -background COLOR -flatten -alpha off transparent.png
对我来说很有效:https://dev59.com/J2ox5IYBdhLWcg3whUkV - Mario