24

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

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

4

6 回答 6

34

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

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

于 2009-05-07T16:42:15.597 回答
29

如果您的灰度值在 0..255 范围内,并且想要以 0x00RRGGBB 的形式生成一个新值,那么执行此操作的快速方法是:

int rgb = grey * 0x00010101;

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

于 2009-08-13T13:01:56.440 回答
11

灰度到 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 都相等时,将产生给定灰度级别的名义上中性色。

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

于 2009-05-07T16:45:18.820 回答
7

灰度意味着所有值都具有相同的强度。将所有通道(以 RGB 为单位)设置为等于灰度值,您将获得 RGB 黑白图像。

于 2009-05-07T16:41:02.700 回答
4

Woudln 将 R、G 和 B 设置为每个像素的相同值(灰度值)不会为您提供正确的灰色阴影吗?

于 2009-05-07T16:42:01.900 回答
0

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

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

于 2013-08-30T09:04:34.437 回答