我在truecolor中有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
答案 0 :(得分: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。有关示例图片和代码的精彩概述,请参阅the ImageMagickv6示例页面。
虽然我仍然不完全了解你想要做什么,但是你当前最近的评论(“是,从RGB到调色板将独立设置。需要设置正确数量的颜色“),听起来你想要做的就是对一堆图像的颜色数量设置严格的限制,但它们不需要使用相同的调色板。
在这种情况下,解决方案非常简单:
convert sample.png -colors 135 output.png
如果结果不令您满意,请尝试使用量化选项。
如果输出图片太大而不适合您,您可以试用-quality
选项。
如果仍然不满意,请尝试以更详细的方式解释您的目标。 祝你好运!
答案 1 :(得分:2)
cat photo.png | pngnq -s 1> photoindexed.png
答案 2 :(得分:0)
结合使用“ -remap”(单个图像)或“ + remap”(多个图像)功能以及“ -colors”,我通常会获得良好的结果。阅读这些功能here。请注意,“使用“ -remap”,您可以为IM提供要用于图像的最终颜色集,无论是打算对这些颜色进行抖动处理,还是仅将它们替换为最近的颜色即可。“,这意味着仅重新映射/替换即可。可能看起来不够好,因为输入图像中的颜色仅被调色板图像中的颜色替换。必须使用某种形式的抖动来在整个输出图像中分布像素颜色转换错误,因为并非调色板中的所有颜色都与输入图像的颜色匹配。
我建议您为此使用“ -colors N”选项。这样会将您的输出图像颜色数减少到64。默认情况下,当您指定“ -colors N”时,ImageMagick会隐式使用“ -dither Riemersma”。还有other dithering options可用。