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



image.png为原色,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的情况下在控制台中转换大量图像。

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

这并不复杂。如果您可以访问支持真彩色图形的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

有许多降低采样颜色的选项,如抖动。请参阅ImageMagickv6示例页面,以获得示例图片和代码的出色概述。

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

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

convert sample.png -colors 135 output.png

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

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

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

cat photo.png | PNGNQ -s 1> photoindex .png

我倾向于使用"-remap"(单张图片)或"+remap"(多图像)功能结合"-color "在这里阅读这些函数。注意,使用"-remap"您向IM提供了您想要用于图像的最后一组颜色,无论您是计划对这些颜色进行抖动,还是只是用它们最近的邻居替换它们,这意味着仅仅重新映射/替换可能看起来不够好,因为输入图像中的颜色只是被调色板图像中的颜色所替换。为了在整个输出图像中分配像素颜色转换错误,需要某种形式的抖动,因为调色板中的所有颜色都与输入图像的颜色不匹配。
我建议你使用"颜色n"。选项。这将减少您的输出图像颜色计数到最大n。默认情况下,ImageMagick使用"-dither Riemersma"当您指定"-colors N"时,将隐式地执行此操作。还有其他的抖动选项。

最新更新