skip to Main Content

I’m trying to replace all non-transparent pixels to a given color using GraphicsMagick for Node.

Using a composite image is not an option, I simply need to change every non-transparent pixel to a given color.

Original image:

Original image

Goal:

enter image description here

Transparent pixels should stay transparent. I’m trying to achieve Photoshop’s Color Overlay effect:

enter image description here

2

Answers


  1. I’m not familiar with Node’s GraphicsMagick library, but there are a few methods to achieve this. Here’s a few I can think of…

    Extract alpha, and replace colors

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

    First Example

    Create solid color image, and copy alpha channel

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

    Second Example

    Use FX expressions

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

    Third Example

    Login or Signup to reply.
  2. This is a bit simpler. In ImageMagick do the following:

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

    enter image description here

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search