48 位颜色?

48 位颜色?

很多时候,尤其是在与 X11 相关的东西(X 资源、Roxterm 主题等)中,我看到颜色指定为 48 位数字:#2e2e34343636#cccc00000000而不是通常的 24 位#2e3436#cc0000。额外的位用于什么?

答案1

我在 Xlib 文档的“颜色字符串”下找到了答案。看来 Xlib 实际上使用 16 位 RGB 值来表示颜色:

RGB 设备字符串规范

[...] 支持 RGB 设备的旧语法,但不鼓励继续使用。语法是一个初始尖锐符号字符,后跟数字规范,格式如下:

#RGB          (4 bits each)
#RRGGBB       (8 bits each)
#RRRGGGBBB    (12 bits each)
#RRRRGGGGBBBB (16 bits each)

R、G 和 B 表示单个十六进制数字。当指定的位数少于 16 位时,它们表示值的最高有效位(与“rgb:”语法不同,在该语法中值是按比例缩放的)。例如,字符串“ #3a7”与“ ”相同#3000a0007000

答案2

我无法谈论 X11 对它们的使用,但一般来说:在较低的位深度和 alpha 通道下无法产生的额外颜色值。

答案3

从您给出的例子来看,它们根本没有被使用,因为 24 位值只是被重复了(有点像只使用 3 个十六进制字符来表示“网络安全”颜色的做法,所以 #c00 的意思与 #cc0000 或 204,0,0 相同,扩展为 #cccc00000000)。

32 位值通常会使用最后一个字节作为 alpha 通道(透明度)。我猜 48 位值可能使用 24 位颜色,每个颜色都有独立的 alpha,但您给出的示例不支持这一点。

相关内容