GraphicsMagick / ImageMagickreplace所有不透明的像素(如Photoshop的颜色叠加)

我正在尝试使用GraphicsMagick for Node将所有不透明的像素replace为给定的颜色。

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

原始图像:

原始图像

目标:

在这里输入图像描述

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

在这里输入图像描述

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

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

在这里输入图像描述

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

提取alpha,并replace颜色

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

第一个例子

创build纯色图像,并复制alpha通道

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

第二个例子

使用FXexpression式

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

第三个例子