Imagemagick 将不透明像素转换为特定颜色

Imagemagick convert opaque pixels to specific color

我想使用 ImageMagick 批量转换一束 PNG files,目的是将每个图像中的 all opaque pixels 更改为 specific hexa color

我试过了

for f in *.png; do convert "$f" -colorspace Gray -auto-level "${file%%.png}_gray.png"; done

仅转换一张图像的结果,其中所有不透明像素都转换为白色

我试过没有批处理,每个命令都成功完成但总是白像素。

如何将不透明像素设置为 #AAA

谢谢!

当你说 opaque 像素时,我不确定你指的是 100% 不透明度的像素还是非零透明度的像素。

方法一

因此,如果我们从这张图片开始,它是一个带有透明环绕和进一步蓝色环绕的蓝色正方形:

然后我们可以使非透明像素变黄:

convert image.png -fill yellow -colorize 100% result.png

您可以使用“#AAA”代替黄色。

方法二

另一种思考方式是将每个 RGB 像素设置为 10/16,即十六进制的 A:

convert image.png -channel RGB -fx '10/16' result.png

方法三

或者你的意思可能是,如果你从这个开始 - 这是从顶部透明到带有红色边框的黑色的渐变:

然后您希望除了完全透明的像素(靠近顶部)之外的所有像素都变成#AAA(此处显示为黄色):

convert start.png -channel A -threshold 1 -channel RGB -fill yellow -colorize 100% result.png