将灰度值转换为RGB表示?

时间:2009-05-07 16:37:39

标签: colors rgb grayscale

如何将灰度值(0-255)转换为RGB值/表示? 它适用于SVG图像,它似乎没有灰度支持,只有RGB ......

注意:这不是RGB - >灰度,已在另一个问题中得到回答,例如Converting RGB to grayscale/intensity

6 个答案:

答案 0 :(得分:28)

快速而肮脏的方法是重复RGB的每个分量的灰度强度。因此,如果你有灰度120,它会转换为RGB(120,120,120)。

这很快且很脏,因为您获得的有效亮度取决于您正在使用的设备的R,G和B子像素的实际亮度。

答案 1 :(得分:27)

如果您在变量中有灰度值并希望以0x00RRGGBB格式生成新值,那么快速执行此操作的方法是:

int rgb = grey * 0x00010101;

或您所选语言的同等语言。

答案 2 :(得分:9)

将灰度转换为RGB很简单。只需使用R = G = B =灰度值。基本思想是颜色(在显示器上以RGB的形式观察)是一个附加系统。

http://en.wikipedia.org/wiki/Additive_color

因此,将红色添加到绿色会产生黄色。在等量的混合物中加入一些蓝色,你就会得到中性色。完全打开[红色,绿色,蓝色] = [255 255 255]会产生白色。 [0,0,0]产生监视器黑色。中间值,当R = G = B都相等时,将产生给定灰度级的名义中性色。

一个小问题取决于您如何查看颜色,它可能不是完全中立的。这取决于您的显示器(或打印机)的校准方式。从这一点来看,我们可以深入探讨色彩科学的深度。我会在这里停下来。

答案 3 :(得分:7)

灰度表示所有值具有相同的强度。将所有通道(RGB)设置为等于灰度值,您将获得RGB黑白图像。

答案 4 :(得分:4)

不会将R,G和B设置为每个像素的相同值(灰度值),以获得正确的灰色阴影吗?

答案 5 :(得分:0)

您也可以查看我的解决方案Faster assembly optimized way to convert RGB8 image to RGB32 image。灰色通道只是在所有其他通道中重复。

目的是找到使用x86 / SSE进行转换的禁用可能解决方案。