如何使用 ImageMagick 为黑色透明的 PNG 图标着色

How to colorize a black-transparent PNG icon with ImageMagick

如何使用 ImageMagick 为具有透明背景的黑色 PNG 图像着色?

用例:
你有几个这样的 PNG 图片:

我想像这样给它们上色:

我想使用 ImageMagick 的 convert 命令,允许脚本一次处理数百个图标。

您可以使用以下命令之一:

$ convert input.png +level-colors "red", output.png
$ convert input.png +level-colors "rgb(255,0,0)", output.png
$ convert input.png +level-colors "#ff0000", output.png

请注意,, 字符在这里很重要。在 , 字符的左侧,我们告诉 convert 应该用哪种颜色替换 black,在右侧用什么颜色替换 white。因此,在 , 字符后不应给出任何内容。

Source

... how do I colorize black & transparent PNG images [...] to colorize them like this [...] using ImageMagick

-fill <COLOR> 选项非常适合此用途。您可以将 "#1bbfc9" 替换为人类可读的名称(例如 "red")或 HTML 颜色代码。

convert target-black.png -fill "#1bbfc9" -colorize 100 target-blue.png

... allowing to script and process hundreds of icons at a time

使用find命令,可以递归数百个。
警告:这将替换原件。

find path/to/files  -iname '*.png' -exec convert "{}" -fill "#1bbfc9" -colorize 100 "{}" \;

使用 ImageMagick,如果您想要所有相同的颜色,您可以使用 mogrify 一次处理整个文件夹的图像而不是转换。创建一个新的输出目录来保存彩色文件。然后 cd 到保存图像的文件夹。

cd path_to/image_folder
mogrify -format png -path path_to/new_folder -fill "cyan" -colorize 100 *.png


path_to 替换为您的实际路径。

您可以在填充命令中使用颜色名称、十六进制颜色或 rgb(...) 颜色,但在 Linux/Mac OSX 上将它们括在引号中。 Windows 不需要引号,但如果是双引号,应该不会引起任何问题。

mogrify