Rounded corners using ImageMagick (bakground trans

2019-04-26 15:44发布

问题:

I'm trying to add rounded corners to my images using ImageMagick.

If the input image is a PNG or GIF file my script is working correctly.

But if my input file is a JPEG file, the corners are black. I'd like to use a custom corner color in that case (ex. white) any idea ?

Here's my working bash script :

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

Parameters are :

$SRC : the input image $W : width of input image $H : height of input image $MASK : the mask image which contains transparent corners $DST : the resulting image with rounded corners.

Thanks in advance.

回答1:

Finally found a solution :

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

I'm using a "temp" PNG file as destination. If the output format is not GIF or PNG, I use the "flatten" function of ImageMagick with the white color as background.

convert $TMP_PNG -background white -flatten $DST

For PNG output : simply copy $TMP_PNG to $DST

For GIF output : simply convert $TMP_PNG to $DST

Else : flatten the image as said before.

Hope that helps.