通过控制台使用自定义调色板将图像转换为索引颜色

问题描述 投票:5回答:3

我有本色的image.png,Palette.png(N种颜色,其中N> 256)或文本文件,其中列出了RGB调色板。如何使用此调色板获取图片?

如果我使用imagemagick:

convert image.png -remap palette.png remap_image.png

它不起作用。

convert image.png -map palette.png remap_image.png

给出非常差的质量。图像非常嘈杂。文件大小大于以前。

GIMP提供最佳质量:

Сonvert image to indexed color > use custom palette

但是GIMP是GUI。我需要在控制台中转换很多图像,而无需运行gimp和X.or​​g。

linux console imagemagick gimp
3个回答
6
投票

多个图像上使用共享调色板需要精心设计的调色板。如果您在多个图像之间使用单个图像的调色板时不太注意,结果将会很差。

不必复杂。如果可以访问支持truecolor图形的GIMP(或其他工具),则可以创建大图像并将所有较小的图像放入其中,然后将图像量化为N种颜色,然后使用该调色板作为源。

您应该能够使用ImageMagick在控制台中模仿GIMP的行为

一旦获得具有要量化的所有颜色的真彩色图像,

# Create an 8-bit png from our source, with a 235-color palette as an example.
convert truecolor_source.png -colors 235 palette.png

# Create an 8-bit png from an arbitrary image and use the palette in palette.png
convert sample.png -map palette.png output.png

有许多用于下采样颜色的选项,例如dithering。有关示例图片和代码的出色概述,请参见the ImageMagickv6示例页面。

尽管我仍然不[[确切地了解您想做什么,但是您当前的最新注释(“ 是的,从RGB到调色板将独立设置。需要设置正确的颜色数量”),听起来您想要做的就是对一堆图像的颜色数量设置严格的限制,但是它们不需要使用same调色板。

在这种情况下,解决方案非常简单:

convert sample.png -colors 135 output.png

如果结果不令人满意,请尝试使用量化选项。

如果输出图像太大,您可以尝试使用-quality选项。

如果仍然不能令人满意,请尝试更详细地说明您的目标。祝你好运!


1
投票
cat photo.png | pngnq -s 1> photoindexed.png

0
投票
我倾向于结合使用“ -remap”(单个图像)或“ + remap”(多个图像)功能以及“ -colors”来获得良好的结果。阅读这些功能here。请注意,“使用“ -remap”,您可以为IM提供要用于图像的最终颜色集,无论是打算对这些颜色进行抖动处理,还是仅将它们替换为最近的颜色即可。“,这意味着仅重新映射/替换即可。可能看起来不够好,因为输入图像中的颜色仅被调色板图像中的颜色替换。为了在整个输出图像中分布像素颜色转换错误,将需要某种形式的抖动处理,因为调色板中的并非所有颜色都与输入图像的颜色匹配。我建议您为此使用“ -colors N”选项。这样会将您的输出图像颜色数减少到64。默认情况下,当您指定“ -colors N”时,ImageMagick会隐式使用“ -dither Riemersma”。也可以使用otherditheringoptions
© www.soinside.com 2019 - 2024. All rights reserved.