我有一些基于 66 色的 map ,不幸的是几个月前我将它们保存为 jpg 格式。
我发现我可以转换为 png,并将其设置为 66 种颜色,但是,无论如何都可以预定义这 66 种颜色,因此例如接近 #888888 的颜色将转换为 #888888 而不是至 878787 和 878887。
还有一个问题是 map 不包含所有 66 种颜色(通常大约 30 种),所以现在我可能会得到 4 种不同类型的白色。 (这就是我需要这个解决方案的原因)
使用 imagemagick 可以做到这一点吗?
最佳答案
您可以通过获取原始 PNG 图像之一并提取独特的颜色来制作您想要的 66 种颜色的 66x1 像素“样本”,如下所示:
magick original.png -unique-colors swatch.png
然后你可以像这样应用它:
magick unhappy.jpg -remap swatch.png result.png
更多详情here .
这是一个具体的例子。这是我们的 map :
首先,制作我们想要在输出图像中显示的 5 种颜色的样本:
magick xc:"rgb(10,100,140)" xc:"rgb(240,190,120)" xc:"rgb(70,130,30)" xc:"rgb(220,230,230)" xc:"rgb(40,80,50)" +append swatch.png
现在将原始颜色中的所有颜色重新映射到样本中的 5 种颜色:
magick map.jpg +dither -remap swatch.png result.png
或者,我们可以让ImageMagick为样本选择最佳颜色,如下所示:
magick map.jpg -colors 7 -unique-colors swatch.png
并按照与以前相同的方式重新映射,但使用 ImageMagick 选择的颜色:
magick map.jpg +dither -remap swatch.png result.png
请注意,您可以同样使用十六进制代码 ( or HSL, or Lab colours ):
convert xc:"#0a658c" xc:"#f0be78" xc:"#46821e" xc:"#dce6e6" xc:"#285032" +append swatch.png
请注意,上述命令假设为 ImageMagick v7。如果您必须使用旧的 v6 语法,请将 magick
替换为 convert
。
关于colors - 使用预定义的颜色代码将 jpg 转换为 png?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64907476/