使用ImageMagick制作圆角(背景透明或白色)

10

我正在尝试使用ImageMagick为我的图片添加圆角。

如果输入的图片是PNG或GIF格式,我的脚本可以正确地工作。

但是,如果我的输入文件是JPEG文件,圆角会变成黑色。我想在这种情况下使用自定义的圆角颜色(例如白色),有什么建议吗?

这是我的工作bash脚本:

convert -size "$W"x"$H" xc:none -draw "roundrectangle 0,0,$W,$H,$R,$R" $MASK
convert $SRC -matte $MASK -compose DstIn -composite $DST

参数:

$SRC:输入图像 $W:输入图像的宽度 $H:输入图像的高度 $MASK:包含透明角的掩膜图像 $DST:带圆角的结果图像。

提前感谢。

1个回答

14

最终找到了解决方案:

convert -size "$W"x"$H" xc:none -draw "roundrectangle 0,0,$W,$H,$R,$R" $MASK
convert $SRC -matte $MASK -compose DstIn -composite $TMP_PNG

我正在使用一个"temp" PNG文件作为目标。如果输出格式不是GIF或PNG,我将使用ImageMagick的"flatten"函数,并以白色作为背景。

convert $TMP_PNG -background white -flatten $DST

对于PNG输出:只需将$TMP_PNG复制到$DST

对于GIF输出:只需将$TMP_PNG转换为$DST

其他情况:如前所述,将图像压平。

希望能有所帮助。


1
注意:如果有人阅读此答案,请注意:如果临时掩码文件$TMP_PNG没有标识其格式的文件扩展名(例如.png),则需要在变量前加上它。像这样:png:$TMP_PNG。另外,canvas:none是编写xc:none的新方法,尽管后者仍然有效。 - starfry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接