【问题标题】:GraphicsMagick / ImageMagick replace all non-transparent pixels (like Photoshop's Color Overlay)GraphicsMagick / ImageMagick 替换所有非透明像素(如 Photoshop 的颜色叠加)
【发布时间】:2017-10-24 21:27:54
【问题描述】:

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

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

原图:

目标:

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

【问题讨论】:

    标签: node.js imagemagick graphicsmagick gm


    【解决方案1】:

    我不熟悉 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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 与 ImageMagick 完美配合 - 但想使用 GraphicsMagick 执行此操作,但相同的命令 (gm convert 84xHk.png -fill "#E91FCB" +opaque none result.png) 会给出以下输出:gm convert: Unable to open file (none) [No such file or directory].
      • 对不起,我不知道 GraphicsMagick。它是 Imagemagick 的早期衍生产品,可能没有所有相同的功能,或者它们为这些功能使用不同的名称。我的猜测是它不理解 +opaque。您可能必须使用 emcconville 的一种方法。
      猜你喜欢
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-15
      相关资源
      最近更新 更多