![]() |
1
6
这实际上是一个 大量 比你想象的更棘手。原因有很多。 主要问题是RGB空间是一个依赖于设备的空间——在一个设备上看起来相似的RGB值在另一个设备中不必看起来相似。(如果你认为这听起来不太可能——由于操作系统对监视器gamma的不同假设,在mac/win/SGI之间获得良好的颜色对应关系之间存在大量问题。) 第二个问题是,对两种颜色之间差异的感知在很大程度上取决于周围的颜色/观看环境。也就是说,两种颜色在黑暗环境中的黑暗环境中看起来可能不同,但在明亮环境中的白色环境中看起来相似。 考虑到这些前提条件,ΔCIE 94是颜色相似性的适当度量。 您将通过将每种颜色从RGB转换为XYZ,然后再转换为Lab来计算它。 RGB到XYZ的转换取决于设备——有一些简单的标准转换,例如 sRGB ,但它们对实际设备的适用性值得怀疑。从XYZ到Lab的转换是复杂的,可以找到 here -对于你的参考白点,你会使用你的设备的白点(或者sRGB,如果你使用的是标准)。 最后,您可以使用上面列出的公式来进行最后的转换。 由于这一切都是相对痛苦的,你可能会更幸运地求助于一个合适的颜色管理工具,比如 LCMS |
![]() |
2
0
这比你想象的要复杂一些。您需要转换以从RGB XYZ LAB LCH和 只有 则可以应用CIE94公式。看看Chroma.js中的实现,并将您需要的部分移植到Ruby: |
![]() |
Knowledge Seeker · 将图像转换为灰度[关闭] 7 年前 |
![]() |
Luke Isitt · 将窗体的背景色设置为ARGB值 7 年前 |
![]() |
LeggoMyEcho · 处理多个检查的最佳方法ruby 7 年前 |
![]() |
tquill · Rails sanitize不允许rgb颜色 7 年前 |
![]() |
1awuesterose · 绘制“中性”透明层并与之混合 7 年前 |
![]() |
IFKCode · 在C中将RGB转换为HSL++ 7 年前 |
![]() |
bafix2203 · 操作RGBA Javascript 7 年前 |
|
George · 在点a到b之间线性增加RGB565值 7 年前 |