【问题标题】:How to add a border to a transparent PNG using ImageMagick, while preserving transparency?如何使用 ImageMagick 为透明 PNG 添加边框,同时保持透明度?
【发布时间】:2022-01-25 16:25:58
【问题描述】:

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

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

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

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

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

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

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

我做错了什么?

【问题讨论】:

    标签: imagemagick imagemagick-convert cloudconvert


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 2011-05-06
      • 2013-04-11
      • 2012-03-29
      • 2017-10-18
      • 1970-01-01
      • 2018-08-04
      相关资源
      最近更新 更多