如何将灰度值 (0-255) 转换为 RGB 值/表示?它用于 SVG 图像,它似乎没有灰度支持,只有 RGB ......
注意:这不是 RGB -> 灰度,已在另一个问题中回答,例如Converting RGB to grayscale/intensity)
如何将灰度值 (0-255) 转换为 RGB 值/表示?它用于 SVG 图像,它似乎没有灰度支持,只有 RGB ......
注意:这不是 RGB -> 灰度,已在另一个问题中回答,例如Converting RGB to grayscale/intensity)
快速而肮脏的方法是为 RGB 的每个分量重复灰度强度。因此,如果您的灰度为 120,它会转换为 RGB(120、120、120)。
这是快速而肮脏的,因为您获得的有效亮度取决于您正在使用的设备的 R、G 和 B 子像素的实际亮度。
如果您的灰度值在 0..255 范围内,并且想要以 0x00RRGGBB 的形式生成一个新值,那么执行此操作的快速方法是:
int rgb = grey * 0x00010101;
或您选择的语言的同等语言。
灰度到 RGB 的转换很简单。只需使用 R = G = B = 灰度值。基本思想是颜色(在显示器上以 RGB 表示)是一种加法系统。
http://en.wikipedia.org/wiki/Additive_color
因此将红色添加到绿色会产生黄色。在混合物中加入等量的蓝色,你会得到中性色。Full on [red, green, blue] = [255 255 255] 产生白色。[0,0,0] 产生监视器黑色。中间值,当 R=G=B 都相等时,将产生给定灰度级别的名义上中性色。
一个小问题取决于您如何看待颜色,它可能不是完全中性的。这取决于您的显示器(或打印机)的校准方式。我们可以从这一点进入色彩科学的有趣深度。我会停在这里。
灰度意味着所有值都具有相同的强度。将所有通道(以 RGB 为单位)设置为等于灰度值,您将获得 RGB 黑白图像。
Woudln 将 R、G 和 B 设置为每个像素的相同值(灰度值)不会为您提供正确的灰色阴影吗?
你也可以看看我的解决方案Faster assembly optimization way to convert RGB8 image to RGB32 image。灰色通道只是在所有其他通道中重复。
目的是找到使用 x86/SSE 进行转换的最快可能解决方案。