>我有两个方块:红色带颜色 (255, 0, 0( 50% 不透明度,蓝色带彩色 (0, 0, 255( 50% 不透明度 和黑色不透明背景。 在这些颜色的交点处,Photoshop 显示颜色 (128, 0, 64( ( 照片HP截图 ).
我同意这一点。蓝色首先与黑色背景混合:
(0, 0, 255( * 0.5 + (0, 0, 0( * ( 1 - 0.5(= (0, 0, 127.5( alpha = 0.5 + 1 * (1 - 0.5( = 1
然后将结果与红色混合:
(255, 0, 0( * 0.5 + (0, 0, 127.5( * (1 - 0.5(= (127.5, 0, 63.75( alpha = 0.5 + 1 * (1 - 0.5( = 1
但是,如果背景是透明的,Photoshop 会给出具有 75% 不透明度的颜色 (170, 0, 85(( 照片HP截图 ).
它是如何获得这种颜色的?我预计(127.5, 0, 127.5(具有75%的不透明度,因为背景中没有可以混合的内容。
按照本文中描述的数学运算,将不透明度为 50% 的蓝色方块与不透明度为 0% 的黑色背景进行 alpha 混合,结果如下:
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}