如何将灰度值(0-255)转换为RGB值/表示? 这是为了在SVG图像中使用,它似乎不支持灰度,只支持RGB ...
注意:这不是RGB->灰度,这已经在另一个问题中回答了,例如将RGB转换为灰度/强度)。
如何将灰度值(0-255)转换为RGB值/表示? 这是为了在SVG图像中使用,它似乎不支持灰度,只支持RGB ...
注意:这不是RGB->灰度,这已经在另一个问题中回答了,例如将RGB转换为灰度/强度)。
快速而简单的方法是将灰度强度重复到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
因此,将红色添加到绿色中会产生黄色。在相等的量中加入一些蓝色混合物,您将得到一种中性颜色。全开[红、绿、蓝]=[255 255 255]会产生白色。[0,0,0]会产生显示器黑色。当R=G=B都相等时,中间值将产生名义上的给定灰度级别的中性颜色。
一个小问题是,取决于您如何查看颜色,它可能不是完全中性的。这将取决于您的监视器(或打印机)的校准方式。从这一点出发,我们可以深入探讨有趣的颜色科学。我就到这里吧。
灰度意味着所有值具有相同的强度。将RGB中的所有通道设置为相同的灰度值,您将获得一个RGB黑白图像。
将每个像素的R、G和B设置为相同的值(灰度值),这样是否可以得到正确的灰色阴影?
您也可以查看我的解决方案{{link1:将RGB8图像转换为RGB32图像的更快的汇编优化方法}}。灰度通道在所有其他通道中简单地重复。
目的是找到使用x86 / SSE进行转换的最快可能的解决方案。
rgb = grey << 16 | grey << 8 | grey
,其中<<
是有符号左移位运算符,|
是按位或运算符。 - sp00m