我正在尝试创建一个工具来帮助我为Web应用程序选择颜色。基本上,我希望能够指定最终颜色和一些叠加参数,并确定底层颜色需要什么(或者是否可以使用指定参数实现)。
所有叠加层都是半透明的黑色。
系统如何运作的一个例子:
我应该注意到,我不需要帮助编写实际的代码,我只是不知道要使用的数学公式,而我的Google-fu今天很弱。我能找到的最接近的答案是这个优秀的答案(https://stackoverflow.com/a/12228643/4027341),但它缺少一个迭代,因为他知道最终所需的颜色,知道叠加颜色,知道叠加不透明度"
答案 0 :(得分:3)
你可以一次做一个频道;公式就是这样:
频道的最终颜色将计算为:
finalColor = originalColor * (1.0 - opacity) + overlayColor * opacity;
在您的情况下,您知道最终颜色,叠加颜色和不透明度;做一些代数,我们得出结论:
originalColor = (finalColor - overlayColor * opacity) / (1.0 - opacity);
请注意不透明度= 1.0的边缘情况;在这种情况下,你根本无法计算原始颜色;更具体地说,如果opacity = 1.0,任何颜色都可以完成这项工作。
此外,公式可能最终产生负值或大于255的值;这些值意味着您无法获得能够提供所需结果的颜色。