4

我正在尝试使用GraphicsMagick for Node将所有非透明像素替换为给定颜色。

使用合成图像不是一种选择,我只需将每个不透明像素更改为给定颜色。

原图:

原始图像

目标:

在此处输入图像描述

透明像素应保持透明。我正在尝试实现 Photoshop 的颜色叠加效果:

在此处输入图像描述

4

2 回答 2

7

这有点简单。在 ImageMagick 中执行以下操作:

convert 84xHk.png -fill "#E91FCB" +opaque none result.png

在此处输入图像描述

于 2017-05-24T17:41:57.857 回答
2

我不熟悉 Node 的 GraphicsMagick 库,但有一些方法可以实现这一点。这里有几个我能想到的...

提取 alpha 并替换颜色

convert 84xHk.png -alpha extract \
        -negate -fill '#E91FCB' -fuzz 50% \
        -opaque black output.png

第一个例子

创建纯色图像,并复制 Alpha 通道

convert 84xHk.png \
       \( +clone -alpha off \
          -fill '#E91FCB' \
          -draw 'color 0,0 reset' \
       \) +swap -compose CopyOpacity -composite output.png

第二个例子

使用 FX 表达式

 convert 84xHk.png -fx 'p.a==1?#E91FCBFF:#E91FCB00' output.png

第三个例子

于 2017-05-24T14:30:30.087 回答