colors - 使用预定义的颜色代码将 jpg 转换为 png?

标签 colors imagemagick imagemagick-convert

我有一些基于 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 :

enter image description here

首先,制作我们想要在输出图像中显示的 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

enter image description here

现在将原始颜色中的所有颜色重新映射到样本中的 5 种颜色:

magick map.jpg +dither -remap swatch.png result.png

enter image description here


或者,我们可以让ImageMagick为样本选择最佳颜色,如下所示:

magick map.jpg -colors 7 -unique-colors swatch.png

enter image description here

并按照与以前相同的方式重新映射,但使用 ImageMagick 选择的颜色:

magick map.jpg +dither -remap swatch.png result.png

enter image description here


请注意,您可以同样使用十六进制代码 ( 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/

相关文章:

java - getColor 方法上的资源未找到异常

colors - 如何设置flycheck-posframe的颜色

pdf - 使用 imagemagick 无法正确转换某些 PDF

ruby-on-rails - 使用蜻蜓 rails 裁剪圆形图像

linux - Imagemagick 添加空白

ImageMagick 验证图像完整性

unix - 为什么tput中同时有setf/setb和setaf/setab?

javascript - 如何使用 css/html 或 javascript 为灰度图像添加颜色?

c++ - 在单个 DLL 中编译 ImageMagick

windows - 打包使用 ImageMagick C API 的应用程序