海报化为每通道 1 位 + 额外亮度位

问题描述 投票:0回答:1

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 值。

imagemagick
1个回答
0
投票

根据@Mark Setchell的评论,使用这些两个答案,我可以通过两步过程来做到这一点:

  1. 生成包含调色板的图像

    $ 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)
    生成了两次;但这应该没问题。

  2. 使用此调色板进行颜色映射

    $ convert foo.png +dither -map palette.png result.png
    

虽然这在技术上确实达到了我的预期,但结果却很差;但是这是一个单独的问题

© www.soinside.com 2019 - 2024. All rights reserved.