问题:我想在javascript中混合两种颜色,并获得结果颜色。SO上有很多类似的问题,但是我没有发现任何实际工作正常的问题。我知道混合两种不同颜色的颜料(颜料)和灯光会产生非常不同的结果(http://en.wikipedia.org/wiki/Color_mixing)。
以下是我已经看到并尝试实施的问题和建议的解决方案:
1: 混合两个RGB颜色向量得到结果
所以,在RGB中混合颜色。我实现了它,在某些情况下它起作用,在某些情况下它不起作用。
工作示例:red
与yellow
->混合orange
。伟大的!
http://jsbin.com/afoim/1/edit
不工作的例子:blue
与yellow
->混合gray
。不太好!:)
http://jsbin.com/afomim/5/edit
我知道,在RGB混合blue
使用yellow
不会让green
的,我明白为什么。
我们不会在这里找到答案,让我们继续前进。
2: 像油漆一样将颜色(颜色)加在一起(蓝色+黄色=绿色等)
让我们尝试使用本讨论中建议的 CMYK 值。混合cyan
与yellow
给出green
:
http://jsbin.com/igaveg/1/edit
但混合blue
使用yellow
的结果black
。
http://jsbin.com/igaveg/2/edit -> 不工作!
3: 如何用C#“自然地”混合颜色?
一个非常相似的问题。最受好评的答案建议将颜色转换为 LAB,这个解决方案似乎很有希望。
所以我将我的颜色转换为 LAB。转换算法是正确的,我测试过了!
http://jsbin.com/oxefox/1/edit
现在我在 LAB 中有两种颜色,但是如何混合它们呢?
注:我知道,可能我不会找到一个算法中混合了blue
有yellow
和将会给完美的green
,但我希望我能够生成类似于绿色的东西:)