ImageMagick 的
-posterize 2
标志可用于将图像转换为每个 R/G/B 通道 1 位(2 个级别)。但是有没有办法转换为具有两组 8 种颜色(半强度和全强度)的格式?换句话说,我的目标格式是每像素 4 位:每 R/G/B 1 位,第四位用于亮度。
根据一些评论进行编辑以求清楚:
使用
-posterize 2
,您总共可以获得 8 种颜色,因为您有 3 个通道,每个通道有两个级别(因为 2³ = 8):
现在想象我可以使用另外七种颜色(因为“半亮黑色”仍然只是黑色):
所以我想将(?)我的图片量化为总共 15 种颜色。
至于输出格式,这并不重要,就像您可以使用
-posterize 2
一样,例如生成正式为 24 位 RGB 的 PNG,它只是在任何通道中不包含任何非 0 或 255 值。
根据@Mark Setchell的评论,使用这些两个答案,我可以通过两步过程来做到这一点:
生成包含调色板的图像
$ convert $(for l in 128 255
do
for r in 0 $l
do
for g in 0 $l
do
for b in 0 $l
do
echo "xc:rgb($r,$g,$b)"
done
done
done
done) +append palette.png
这会生成一个16种颜色的文件,因为
xc:rgb(0,0,0)
生成了两次;但这应该没问题。
使用此调色板进行颜色映射
$ convert foo.png +dither -map palette.png result.png
虽然这在技术上确实达到了我的预期,但结果却很差;但是这是一个单独的问题。