我可以使用像 GIMP 这样的程序来解决这个问题,但我认为手动计算会更容易,前提是我知道怎么做。
如果我说:
#FF0000 (red)
我如何将其转换为十六进制的黑白等效值。
一种猜测是取每个 RGB 值的平均值,然后应用于每个颜色空间。
所以
(0xff + 0x00 + 0x00) / 3 = 255 / 3 = 85 = 0x55
会来
#555555
这是正确的吗?这只是一个猜测。
最佳答案
转换为 Y'UV ,并且采用 Y' 分量将是 RGB 值的灰度值的更准确表示。我知道压缩高清 (720p) 分辨率视频和全高清 (1080p) 分辨率视频之间的视频压缩转换公式不同。因此,转换为灰度并不是一件容易的事。似乎有一些人为因素决定了灰色全亮红色的程度。
无论如何,假设 col
是您的初始颜色值,您正在寻找的公式是这样的:
(((((((col >> 16) & 0xff)*76) + (((col >> 8) & 0xff)*150) +
((col & 0xff)*29)) >> 8)) << 16) |
(((((((col >> 16) & 0xff)*76) + (((col >> 8) & 0xff)*150) +
((col & 0xff)*29)) >> 8)) << 8) |
((((((col >> 16) & 0xff)*76) + (((col >> 8) & 0xff)*150) +
((col & 0xff)*29)) >> 8))
顺便说一下,你的#FF0000 使用这个公式得出的结果是#4B4B4B。
关于css - 如何将十六进制颜色转换为十六进制黑白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16858811/