【问题标题】:Determine RGBA colour received by combining two colours通过组合两种颜色确定接收到的 RGBA 颜色
【发布时间】:2012-05-28 09:01:34
【问题描述】:

我有两种颜色定义为 RGBA(在我的具体示例中,其中一种颜色是 [alpha 0.85 的白色] 和 [alpha 0.25 的 57、40、28]。第二种颜色绘制在第一种颜色上(即带 alpha 的白色是背景,第二种颜色用于绘图)。我怎样才能确定组合的 RGBA 颜色是什么?我需要一次性完成 - 所以任何工具都可以(例如我' 很高兴在 Photoshop 中绘制一些东西,看看结果如何)。

我有几套要组合,但不要太多。任何指针?谢谢。

【问题讨论】:

    标签: language-agnostic colors rgba


    【解决方案1】:

    当使用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
    

    请参阅 wikipedia article 了解 Alpha 合成。

    【讨论】:

    • 太好了,谢谢!除了你似乎已经交换了颜色。如果我关注那篇文章,我需要替换你答案中的两种颜色。
    • 糟糕,我没有仔细阅读问题并将白色放在前台。但你是对的:Ca 是前景,Cb 是背景。
    • 我对这里使用的符号感到困惑。 aα 是同一个变量,还是不同的变量?
    • @AndersonGreen αaαbαr 是三个变量。它们指定第一个源的 (a)、第二个源的 (b) 和结果的 (r) alpha 分量。
    • @NikolaiRuhe 那么CrCaCb 代表什么?
    猜你喜欢
    • 2023-03-14
    • 2014-12-06
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    相关资源
    最近更新 更多