Graphics 如何在photoshop中使用透明背景进行alpha混合

Graphics 如何在photoshop中使用透明背景进行alpha混合,graphics,glsl,photoshop,Graphics,Glsl,Photoshop,我有两个正方形:红色和颜色(255,0,0)50%不透明度,蓝色和颜色(0,0,255)50%不透明度 黑色不透明背景。 在这些颜色的交叉处,Photoshop显示颜色(128、0、64)( ) 我同意这一点。蓝色首先与黑色背景混合: (0,0255)*0.5+(0,0,0)*(1-0.5)=(0,0127.5) α=0.5+1*(1-0.5)=1 然后将结果与红色混合: (255,0,0)*0.5+(0,0127.5)*(1-0.5)=(127.5,0,63.75) α=0.5+1*(1-0.

我有两个正方形:红色和颜色(255,0,0)50%不透明度,蓝色和颜色(0,0,255)50%不透明度 黑色不透明背景。 在这些颜色的交叉处,Photoshop显示颜色(128、0、64)( )

我同意这一点。蓝色首先与黑色背景混合:

(0,0255)*0.5+(0,0,0)*(1-0.5)=(0,0127.5) α=0.5+1*(1-0.5)=1

然后将结果与红色混合:

(255,0,0)*0.5+(0,0127.5)*(1-0.5)=(127.5,0,63.75) α=0.5+1*(1-0.5)=1

但如果背景是透明的,photoshop会提供75%不透明度的颜色(170,0,85)( )


它是怎么变成那种颜色的?我预期(127.5,0127.5)的不透明度为75%,因为背景中没有任何东西可以混合。

根据本文中描述的数学,将不透明度为50%的蓝色正方形混合到不透明度为0%的黑色背景上,结果如下:

alpha_bg = 0
alpha_fg = 0.5
alpha_blended = alpha_fg + alpha_bg * (1 - alpha_fg) = 0.5
color_blended = ({0, 0, 255} * alpha_fg + {0, 0, 0} * (alpha_bg * (1 - alpha_fg))) / alpha_blended =
    ({0, 0, 255} * 0.5 + {0, 0, 0} * 0) / 0.5 = {0, 0, 255}
然后,重复这些计算,在我们上面计算的颜色顶部,将红色正方形与50%不透明度混合:

alpha_bg = 0.5
alpha_fg = 0.5
alpha_blended = alpha_fg + alpha_bg * (1 - alpha_fg) = 0.5 + 0.5 * (1 - 0.5) = 0.75
color_blended = ({255, 0, 0} * alpha_fg + {0, 0, 255} * (alpha_bg * (1 - alpha_fg))) / alpha_blended =
    ({255, 0, 0} * 0.5 + {0, 0, 255} * (0.5 * (1 - 0.5))) / 0.75 = {170, 0, 85}

按照文章中描述的数学,alpha将不透明度为50%的蓝色正方形混合到不透明度为0%的黑色背景上,结果如下:

alpha_bg = 0
alpha_fg = 0.5
alpha_blended = alpha_fg + alpha_bg * (1 - alpha_fg) = 0.5
color_blended = ({0, 0, 255} * alpha_fg + {0, 0, 0} * (alpha_bg * (1 - alpha_fg))) / alpha_blended =
    ({0, 0, 255} * 0.5 + {0, 0, 0} * 0) / 0.5 = {0, 0, 255}
然后,重复这些计算,在我们上面计算的颜色顶部,将红色正方形与50%不透明度混合:

alpha_bg = 0.5
alpha_fg = 0.5
alpha_blended = alpha_fg + alpha_bg * (1 - alpha_fg) = 0.5 + 0.5 * (1 - 0.5) = 0.75
color_blended = ({255, 0, 0} * alpha_fg + {0, 0, 255} * (alpha_bg * (1 - alpha_fg))) / alpha_blended =
    ({255, 0, 0} * 0.5 + {0, 0, 255} * (0.5 * (1 - 0.5))) / 0.75 = {170, 0, 85}