GraphicsMagick / ImageMagick替换所有非透明像素(如Photoshop'颜色叠加)

时间:2017-05-24 13:36:29

标签: node.js imagemagick graphicsmagick gm

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

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

原始图片:

Original image

目标:

enter image description here

透明像素应保持透明。我试图实现Photoshop的色彩叠加效果:

enter image description here

2 个答案:

答案 0 :(得分:3)

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

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

cell array

答案 1 :(得分:2)

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

提取alpha并替换颜色

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

First Example

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

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

Second Example

使用FX表达式

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

Third Example