gpt4 book ai didi

javascript - 在javascript中混合两种颜色 "naturally"

转载 作者:IT王子 更新时间:2023-10-29 03:21:38 26 4
gpt4 key购买 nike

问题:我想在 javascript 中混合两种颜色,并得到结果颜色。SO 上有很多类似的问题,但是我没有发现任何实际工作正常的问题。我知道混合两种不同颜色的油漆(颜料)和灯光会产生非常不同的结果(http://en.wikipedia.org/wiki/Color_mixing)。

以下是我已经看到并尝试实现的问题和建议的解决方案:

1: Mixing two RGB color vectors to get resultant
因此,在 RGB 中混合颜色。我实现了它,在某些情况下它可以工作,但在某些情况下却不能。

工作示例:redyellow -> orange 混合。太棒了!
http://jsbin.com/afomim/1/edit

不工作的例子:混合 blueyellow -> gray。不太好! :) http://jsbin.com/afomim/5/edit
我知道在 RGB 中,将 blueyellow 混合永远不会变成 green,我明白为什么。

我们不会在这里找到答案,让我们继续前进。

2: Adding Colours (Colors) Together like Paint (Blue + Yellow = Green, etc)

让我们尝试按照本次讨论中的建议使用 CMYK 值。将 cyanyellow 混合得到 green:
http://jsbin.com/igaveg/1/edit
但将 blueyellow 混合会得到 black
http://jsbin.com/igaveg/2/edit -> 不工作!

3: How to mix colors "naturally" with C#?
一个非常相似的问题。投票最多的答案建议将颜色转换为 LAB,这个解决方案看起来很有希望。
所以我将颜色转换为 LAB。转换算法是正确的,我测试了!

http://jsbin.com/oxefox/1/edit

现在我在 LAB 中有两种颜色,但是如何混合它们呢?

注意 我知道我可能找不到将 blueyellow 混合并给出完美的 green< 的算法,但我希望我能生成类似于绿色的东西:)

最佳答案

我花了 3-4 天的时间来回答这个问题。这是一个非常复杂的问题。

如果你想“自然地”混合两种颜色,你可以这样做:

  1. CMYK 混合:这不是完美的解决方案,但如果您现在需要一个解决方案,并且不想花数月时间学习该主题、进行实验和编码,您可以查看:https://github.com/AndreasSoiron/Color_mixer

  2. 实现 Kubelka-Munk 理论。我花了很多时间阅读它,并试图理解它。如果你想要一个专业的解决方案,这应该是可行的方法,但它需要为你想要混合的每种颜色提供 6 个参数(如反射率、吸收率等)。仅有 R、G、B 是不够的。实现该理论并不难,但似乎缺少关于每种颜色的参数。如果你知道怎么做,请告诉我:)

  3. 实验:您可以做 ipad 应用程序的开发人员所做的事情:Paper。他们手动选择了 100 对流行颜色,并用眼球测试了它们应该如何混合。详细了解它 here

我个人暂时会实现 CMYK 混合,也许以后,如果我有时间,我会尝试制作像 Fiftythree 的那些人那样的东西。会看到:)

关于javascript - 在javascript中混合两种颜色 "naturally",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14819058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com