【问题标题】:Convert jpg to png with predefined color codes?使用预定义的颜色代码将 jpg 转换为 png?
【发布时间】:2020-11-19 07:55:09
【问题描述】:

我有一些基于 66 色的地图,不幸的是,我在几个月前以 jpg 格式保存了这些地图。

我发现我可以转换为 png,并将其设置为 66 种颜色,但是,无论如何都可以预先定义这 66 种颜色,因此例如接近 #888888 的颜色将转换为 #888888 而不是转至 878787 和 878887。

还有一个问题是地图不包含所有 66 种颜色(通常在 30 种左右),所以现在我可能会得到 4 种不同类型的白色。 (这就是我需要这个解决方案的原因)

使用 imagemagick 是否也能做到这一点?

【问题讨论】:

    标签: colors imagemagick imagemagick-convert


    【解决方案1】:

    您可以制作 66 种颜色的 66x1 像素“样本”,方法是获取您的原始 PNG 图像之一并提取独特的颜色,如下所示:

    magick original.png -unique-colors swatch.png
    

    然后你可以这样应用它:

    magick unhappy.jpg -remap swatch.png result.png
    

    更多详情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
    

    现在将原始颜色中的所有颜色重新映射为样本中的 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-17
      • 2013-03-07
      • 2011-09-24
      • 1970-01-01
      • 2011-11-16
      • 2012-07-07
      • 2013-05-09
      • 2017-04-26
      相关资源
      最近更新 更多