我有两种定义为RGBA的颜色(在我的特定示例中,其中一种是[alpha为0.85的白色]和[alpha为0.25的57、40、28]。第二种颜色绘制在第一种颜色上(即,alpha为白色)是背景,第二种颜色是用于绘图的。)如何确定组合的RGBA颜色是什么?我需要一次性完成-因此任何工具都可以(例如,我很高兴在Photoshop中绘制一些东西,然后看看结果如何)。
我可以组合几套,但不要太多。有指针吗?谢谢。
最佳答案
当使用Painter's algorithm时,大多数色彩合成都是使用Porter-Duff“Over”模式完成的:
产生的alpha:
αr = αa + αb (1 - αa)
产生的颜色成分:
Cr = (Ca αa + Cb αb (1 - αa)) / αr
因此,对于您的示例:
alpha = 0.25 + 0.85 * (1 - 0.25) = 0.8875
red = (57 * 0.25 + 255 * 0.85 * (1 - 0.25)) / 0.8875 = 199.2
green = (40 * 0.25 + 255 * 0.85 * (1 - 0.25)) / 0.8875 = 194.4
blue = (28 * 0.25 + 255 * 0.85 * (1 - 0.25)) / 0.8875 = 191.1
有关alpha合成,请参见wikipedia article。
关于language-agnostic - 通过组合两种颜色来确定接收到的RGBA颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10781953/