css - 如何将十六进制颜色转换为十六进制黑白?

标签 css

我可以使用像 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/

相关文章:

css - 如何使用 SASS 生成类?

jquery - 使用 jquery 添加边框图像?

选择器上方的 CSS 选择器

css - 使用推拉 Bootstrap 在移动设备上向上移动 div

css - 在 WordPress 中创建子主题时遇到问题

html - 在 Angular 中,如何在选择时将 <option> 文本设为粗体?

javascript - jQuery 翻转插件开关功能在开关上失败

jquery - 调整大小时,使 div 内的文本换行到多行

html - 如何增加页眉的宽度以匹配整个页面的宽度?

javascript - 任何没有 MVC 或类似东西的 ASP.NET 脚本/样式表压缩器?