我想改变我的图片背景颜色,这是我的来源http://cdn.mayike.com/emotion/img/attached/1/image/dt/20170916/18/20170916180007_833.png。
如果我想将背景颜色更改为其他颜色,我该怎么办?
如果我想将背景颜色更改为透明,我该怎么办?
我尝试使用convert aa.png -background '#0e0e0e' bb.png
,但这不起作用。
答案 0 :(得分:2)
通常需要-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
答案 1 :(得分:2)
由于你的图像不是二进制的,我认为你不会得到完美的结果。然而在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
答案 2 :(得分:1)
要应用任何背景颜色,首先程序应该知道边缘和背景。 您使用的图像不会这样做。 虽然您的命令是正确的,但由于不区分边和背景,因此它不起作用。所以我们先使用Masking
首先运行此以获得边缘:
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
现在你将获得预期的结果。