6

我有真彩色的 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.org。

4

3 回答 3

6

跨多个图像使用共享调色板需要精心制作的调色板。如果在多个图像中使用单个图像的调色板时不小心,结果会很差。

不过,这不必复杂。如果您可以访问支持真彩色图形的 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。请参阅ImageMagickv6示例页面以获取带有示例图片和代码的出色概述。

虽然我仍然不完全了解您想要做什么,但您当前最近的评论(“是的,从 RGB 到调色板将独立设置。需要设置正确的颜色数量”),听起来你想要做的就是设置对一堆图像的颜色数量有严格限制,但它们不需要使用相同的调色板。

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

convert sample.png -colors 135 output.png

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

如果输出图像对您的喜好太大,您可以尝试该-quality选项。

如果这仍然不令人满意,请尝试以更详细的方式解释您的目标。祝你好运!

于 2011-10-03T12:40:15.420 回答
1

猫照片.png | pngnq -s 1 > photoindexed.png

于 2013-11-01T06:57:07.813 回答
0

我倾向于将“-remap”(单个图像)或“+remap”(多个图像)功能与“-colors”结合使用以获得良好的结果。在此处阅读这些功能。请注意,“使用“-remap”可以为 IM 提供要用于图像的最终颜色集,无论您是打算抖动这些颜色,还是只用最近的邻居替换这些颜色。”,这意味着只是重新映射/替换可能看起来不够好,因为输入图像中的颜色只是被调色板图像中的颜色替换。某种形式的抖动对于在整个输出图像中分布像素颜色转换错误是必要的,因为并非调色板中的所有颜色都与输入图像的颜色匹配。
我建议您为此使用“-colors N”选项。这会将您的输出图像颜色计数减少到最大 N。默认情况下,当您指定“-colors N”时,ImageMagick 会隐式使用“-dither Riemersma”。还有其他可用的 抖动 选项

于 2019-10-12T20:40:31.647 回答