代码之家  ›  专栏  ›  技术社区  ›  jedierikb grijalvaromero

给定颜色和alpha,要添加什么颜色和alpha来创建所需的颜色?

  •  4
  • jedierikb grijalvaromero  · 技术社区  · 15 年前

    如果我有一个底层颜色和一个alpha值(c&a),并且想要在屏幕上创建一个自定义的c&a,那么确定哪些c&a必须添加为底层顶部的层的函数是什么?

    编辑:

    我想复制photoshop的“正常”模式,以便与设计师的图形设计相匹配。

    例如:

    BASE LAYER rgb: 255-0-0 alpha: 51/256
    
    +
    
    NEW LAYER rgb: ???  alpha: ???
    
    =
    
    DESIRED LAYER rgb: 114-0-141 alpha: 92/256
    

    P.S.:答案是0-0-255α:51/256…但我知道这是因为我写了这个问题并在Photoshop中验证了它。

    2 回复  |  直到 15 年前
        1
  •  2
  •   dirkgently    15 年前

    这取决于 Blend Mode 用于两层(底部和顶部)之间。wiki页面列出了一些您可能感兴趣的公式。

    PDF参考手册也有很好的解释:

    γ± R C R =(1) γ± S **± * C [+(1 -±) * γ± S *C S + γ± S * B(C) ,C S )

    在哪里?

      C = color, α = alpha value 
    

    和下标

    R=结果,B=背景,S=源

    也,

    B(C) ,C S )=混合模式功能

    在正常混合模式下: B(C) ,C S = C S

    混合α由以下公式给出:

    γ± R =结合(α±) S )

    联管节(b,s)=b+s-(b*s)

        2
  •  0
  •   Lale    15 年前

    我认为photoshop的“正常”模式实现了波特·达夫的“过度”合成。然后 wikipedia page非常有用,它列出了公式,尤其是处理alpha的公式。

    请注意,并非所有的解决方案都是可能的。即,所需层的α必须大于基层的α。

    解决方案如下:

    • 确定新层的alpha为 (alpha_desired - alpha_base) / (1 - alpha_base) . 注意 (alpha_desired - alpha_base) 必须是积极的。
    • 确定新层的颜色,它可能在可用范围之外——那么操作是不可能的。