假设我有这张图片:
我想将颜色数量减少到 3,如下所示:
为此,我应用了以下命令:
convert orange.jpg -remap palette.png orange_output.png
其中palette.png 看起来像这样:
有没有办法在不使用调色板图像的情况下执行这种转换?理想情况下,我想提供一个颜色列表并让它以这种方式转换图像。
假设我有这张图片:
我想将颜色数量减少到 3,如下所示:
为此,我应用了以下命令:
convert orange.jpg -remap palette.png orange_output.png
其中palette.png 看起来像这样:
有没有办法在不使用调色板图像的情况下执行这种转换?理想情况下,我想提供一个颜色列表并让它以这种方式转换图像。
有没有办法在不使用调色板图像的情况下执行这种转换?
是的,但它不像提供调色板那么容易。在非常高的级别上,您可以通过应用dither、丢弃颜色甚至调整tree-depth来预处理源图像。之后就是更换颜色的简单操作。
convert source.jpg -colors 3 -treedepth 3 -dither FloydSteinberg +remap out.png
省略-draw 颜色替换示例
但我想你真的想要一个简单的oneliner。幸运的是 remap 接受文本:格式和管道
convert -size 1x1 xc:green xc:orange xc:blue -append txt:- | \
convert source.jpg -remap txt:- out.png
文本格式很简单,可以使用任何脚本语言动态创建和存储。
# ImageMagick pixel enumeration: 1,3,65535,srgb
0,0: (0%,50.1961%,0%) #000080800000 green
0,1: (100%,64.7059%,0%) #FFFFA5A50000 orange
0,2: (0%,0%,100%) #00000000FFFF blue
您可以将其减少到...
# ImageMagick pixel enumeration: 1,3,255,rgb
0,0: #008000 green
0,1: #FFA500 orange
0,2: #0000FF blue