求教图片叠加后每个像素的色彩

新手上路,请多包涵

我现在有两张图片, 一张是半透明(保证是黑色或者白色), 一张是任意图片, 我现在要算出两张图片叠加后(透明图片在上方), 每个像素的RGBA。 应该怎么算? 不用代码示例, 直接告诉我算法即可。谢谢!

阅读 8.6k
2 个回答

Alpha 透明度混合算法,网上收集整理,分成以下三种:

  1. R1,G1,B1,Alpha1 为前景颜色值,R2,G2,B2,Alpha2 为背景颜色值

     前景色  R = R1 * Alpha1 + R2 * Alpha2 * (1-Alpha1) ;
    
                G = G1 * Alpha1 + G2 * Alpha2 * (1-Alpha1) ;
    
                B = B1 * Alpha1 + B2 * Alpha2 * (1-Alpha1) ;
    
     背景色 Alpha = 1 - (1 - Alpha1) * ( 1 - Alpha2) ;
    
                R = R / Alpha ;
    
                G = G / Alpha ;
    
                B = B / Alpha ;
    
  2. 半透明算法:

混合算法目前在常用到的算法是 AlphaBlend。

计算公式如下:假设一幅图象是 A,另一幅透明的图象是 B,那么透过 B 去看 A,看上去的图象 C 就是 B 和 A 的混合图象,设B图象的透明度为alpha(取值为0-1,1为完全透明,0为完全不透明).

Alpha混合公式如下:

                  R(C)=(1-alpha)*R(B) + alpha*R(A)
                  G(C)=(1-alpha)*G(B) + alpha*G(A)
                  B(C)=(1-alpha)*B(B) + alpha*B(A)

R(x)、G(x)、B(x)分别指颜色 x 的 RGB 分量原色值。从上面的公式可以知道,Alpha 其实是一个决定混合透明度的数值。改变这个 alpha 值可以得到一个渐变的效果。

  1. 简易Alpha混合算法:

首先,要能取得上层与下层颜色的 RGB 三基色,然后用 r,g,b 为最后取得的颜色值;r1,g1,b1 是上层的颜色值;r2,g2,b2 是下层颜色值。

内容详见:RGBA alpha 透明度混合算法

新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏