我想用另一种颜色替换 PNG Logo 中的所有黑色实例。我尝试过:
convert source.png -fill #123456 -opaque black out.png
但 Logo 中有一些未转换的透明黑色像素。如何更改每个黑色像素,但保持每个黑色像素的透明度?
最佳答案
convert in.png xc:"#ff0000" -channel RGB -clut out.png
这样就可以完成任务了。假设 in.png 有一个 Alpha channel ,in.png 中的 RGB channel 将被替换为红色 (#ff0000),同时保持 Alpha channel 不变。
这里发生了什么? in.png 是第一个输入图像。 xc:"#ff0000"是第二个输入图像(xc: 特殊文件被 ImageMagick 解释为全部填充给定颜色的图像)。 -clut 选项(“颜色查找表”)将第二个图像解释为查找表并将其应用于第一个图像中的值。由于第二个图像是单色的,因此在本例中,第一个图像中的每种颜色都映射为红色。最后一个文件名 (out.png) 被解释为输出文件。
为什么-clut不影响alpha channel ? 那么,您可以使用 -channel 选项设置受影响的 channel 。它必须位于 -clut 之前。 RGB 就是我们想要的。
关于Imagemagick 替换颜色但保持透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15121220/