将值转换为颜色是众所周知的,我确实理解以下两种方法(在改变 RGB 颜色值来表示一个值 https://stackoverflow.com/questions/1423925/changing-rgb-color-values-to-represent-a-value)
- 灰度值
-
作为基色亮度的值 https://stackoverflow.com/questions/1423925/changing-rgb-color-values-to-represent-a-value/1423995#1423995 (e.g. 蓝色的亮度 http://farm3.static.flickr.com/2614/3921280034_d6328ec188_o.png)
但是,当我想使用全颜色范围(“所有颜色”)时,最好的算法是什么?当我使用具有 8 位 RGB 值的“灰色”时,我实际上确实有 256 种色调(白到黑)的表示。但如果我使用整个系列,我可以使用更多色调。就像是this http://2.bp.blogspot.com/-FjYXzWE-Pw8/TlVYWfYNwQI/AAAAAAAAAiU/abI9dL94DM0/s1600/9924637-large.gif。而且这样会更容易识别。
基本上我需要 Javascript 中的算法,但我想所有代码(例如 C#、Java、伪代码)也可以。底部的图例显示了编码,我正在寻找为此的算法。
因此,如果有一个值范围(例如 1-1000),我可以将 1 表示为白色,将 1000 表示为黑色,但我也可以将 1 表示为黄色,将 1000 表示为蓝色。但这有标准算法吗?看例子here http://2.bp.blogspot.com/-FjYXzWE-Pw8/TlVYWfYNwQI/AAAAAAAAAiU/abI9dL94DM0/s1600/9924637-large.gif,表明它们使用颜色间隔。我不仅想使用灰色或改变亮度,而且想使用所有颜色。
这是一个视觉演示 http://colorbrewer2.org/(需要闪光灯)。给定颜色方案中表示的值 a,我的目标是计算颜色。
我确实有一个线性颜色范围,例如1-30000
- 更新 -
Here https://stackoverflow.com/questions/649454/what-is-the-best-way-to-average-two-colors-that-define-a-linear-gradient我发现这里有一个叫做 LabSpace 的东西:
实验室空间是一种表示颜色的方式,其中彼此接近的点是那些在人类看来彼此相似的点。
所以我需要的是一种算法来表示这个实验室空间中的线性值。
有两种指定颜色的基本方法。一种是预定义的颜色列表(调色板),然后您的颜色值是该列表的索引。这就是旧的 8 位彩色系统的工作原理,并且 GIF 图像仍然如此。有网络安全颜色列表,例如http://en.wikipedia.org/wiki/Web_colors http://en.wikipedia.org/wiki/Web_colors,通常适合 8 位值。通常相似的颜色是相邻的,但有时不是。
调色板的优点是每个像素需要少量数据,但缺点是屏幕上可以同时显示的不同颜色的数量受到限制。
另一种基本方法是指定颜色的坐标。一种方法是 RGB,每种原色都有一个单独的值。另一个是色相/饱和度/亮度。 CMYK(青色、品红色、黄色,有时还有黑色)用于打印。这就是通常所说的真彩色,当您使用“所有颜色”之类的短语时,听起来您正在寻找这样的解决方案。对于渐变和此类 HSL 可能非常适合您。例如,从颜色到灰色的渐变只会降低饱和度值。如果您想要的只是“纯”颜色,则固定饱和度和亮度值并改变色调。
几乎所有绘图系统都需要 RGB,但从 HSL 到 RGB 的转换是直接的。http://en.wikipedia.org/wiki/HSL_and_HSV http://en.wikipedia.org/wiki/HSL_and_HSV
如果您无法腾出完整的每种颜色 24 位(每种颜色 8 位,32 位颜色相同,但添加了一个透明通道),您可以使用 15 或 16 位颜色。这是同样的事情,但不是每种颜色 8 位,而是每种颜色 5 位(15 位)或 5-6-5(16 位,绿色获得额外的位,因为我们的眼睛对绿色阴影更敏感)。这适合一个短整数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)