使用imagemagick中的颜色列表重新映射/后处理图像颜色
假设我有这样一个图像: 我想把颜色的数量减少到3,就像这样: 为此,我应用了以下命令:使用imagemagick中的颜色列表重新映射/后处理图像颜色,image,imagemagick,rmagick,dragonfly-gem,Image,Imagemagick,Rmagick,Dragonfly Gem,假设我有这样一个图像: 我想把颜色的数量减少到3,就像这样: 为此,我应用了以下命令: convert orange.jpg-remap palete.png orange\u output.png 其中palete.png如下所示: 有没有一种方法可以在不使用调色板图像的情况下执行此转换?理想情况下,我想提供一个颜色列表,并让它以这种方式转换图像 有没有一种方法可以在不使用调色板图像的情况下执行此转换 是的,但这并不像提供调色板那么容易。在一个非常高的层次上,您可以通过应用,甚至调整来预
convert orange.jpg-remap palete.png orange\u output.png
其中palete.png如下所示:
有没有一种方法可以在不使用调色板图像的情况下执行此转换?理想情况下,我想提供一个颜色列表,并让它以这种方式转换图像
有没有一种方法可以在不使用调色板图像的情况下执行此转换
是的,但这并不像提供调色板那么容易。在一个非常高的层次上,您可以通过应用,甚至调整来预处理源图像。之后,更换颜色将是一个简单的操作
convert source.jpg-colors 3-treedepth 3-dither FloydSteinberg+remap out.png
省略替换示例
但我想你真的想要一本简单的单行本。幸运的是,重新映射同时接受文本:格式和管道
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
convert-size 1x1 xc:#ffffff-append colors.png
创建具有黑色像素而非白色像素的1x1图像。我使用的是ImageMagick 7.0.7-22我发现:ImageMagick喜欢做过早的优化,所以它将单像素白色图像优化为二进制PNG。要强制IM输出sRGB png,请运行convert-size 1x1 xc:#ffffff-append-define png:color type=6 colors.png
。