1

我正在尝试使用 ImageMagick 为透明 PNG 添加 10px 红色边框,同时保留图像中可能存在的任何现有透明度。这是我的源图像:

在此处输入图像描述

如果您下载并使用图像查看器查看该图像,您会看到它具有透明背景。

根据我读过的所有内容,以下 Imagemagick 命令应为图像添加 10px 红色边框:

convert input.png -bordercolor red -border 10 output.png

它实际上确实为图像添加了红色边框,因为输出尺寸在两个方向上都大了 20 像素。不幸的是,它也将图像的背景颜色更改为红色。这是输出文件:

在此处输入图像描述

希望将透明区域更改为红色。我只想在透明图像周围添加一个红色边框。

我尝试使用 ImageMagick 版本 6.9.10-23(Ubuntu)和 7.1.0(通过 CloudConvert API),结果相同。我花了几个小时(!)试图解决这个问题。

我究竟做错了什么?

4

1 回答 1

1

我在这个线程中找到了答案:https ://legacy.imagemagick.org/discourse-server/viewtopic.php?t=31843 。以下是两个金钱报价:

因此,“-bordercolor red -border 2”应该创建一个比输入大 2 个像素的不透明红色图像,并在其上合成输入。由于您的输入是“-size 100x100 xc:none”,因此结果应该是 102x102 不透明的红色像素。您可能认为这是“非常明显不正确”,但这是记录在案的行为。

不过,如果在当前的 IM 6 和 IM 7 中在 -bordercolor red -border 2 之前添加 -compose copy ,则可以让它在内部透明。这可能只是从这里开始的方法on,如果改变行为有充分的理由。

这是产生我所追求的结果的命令:

convert -background transparent -bordercolor red -compose Copy -border 10 input.png output.png

于 2021-12-25T22:38:06.450 回答