使用 ImageMagick 实现圆角(背景透明或白色)

发布于 2024-08-14 12:10:33 字数 431 浏览 4 评论 0原文

我正在尝试使用 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 :带有圆角的结果图像。

提前致谢。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

静若繁花 2024-08-21 12:10:33

终于找到了解决方案:

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

我使用“临时”PNG 文件作为目标。如果输出格式不是GIF或PNG,我使用ImageMagick的“展平”功能,并以白色作为背景。

convert $TMP_PNG -background white -flatten $DST

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

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

其他:如前所述压平图像。

希望有帮助。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文