2016-04-21 20 views
0

对于我正在制作的JavaScript程序,我需要在颜色(例如,#4A6CD4)上找到覆盖层(#7F7F7F)的alpha值,然后创建一个输出颜色(例如,#6380DA)。因此,它应该是这样的:查找给定的3种颜色的Alpha

从上到下:
# 7F7F7F(阿尔法未知)
# 4A6CD4

将输出#6380DA。我需要知道的是叠加层的alpha值以及如何找到它。有人可以帮帮我吗?

回答

0

如果底部层的α是1,那么就可以很容易地计算这样的阿尔法值:

var top = 0x7F7F7F; 
var bottom = 0x4A6CD4; 
var actual = 0x6380DA; 
var alpha = (actual - bottom)/(top-bottom); 
console.log(alpha); 
+0

当我计算它(变量'top'已被使用,所以我使用topLayer)时,我得到一个结果,但如果我将顶层设置为黑色,我会得到一个负alpha值。 –

+0

如果alpha <0,只需将minus减号加到plus。 –

0

“正式的”混合式应该是

得到的颜色=阿尔法*覆盖色+(1 - α)*背景颜色

方程式具有用于每个通道(红,绿和蓝,以十六进制表示的颜色代码的两个数字表示各)

要计算

就可以解决这个为阿尔法(或使用Excel和数值求解)

公式不与例子匹配值,你给,虽然 - 是实际值或一些随机的例子吗?

+0

除覆盖层外,所有值均为实际值,它们可以是(#FFFFFF)或(#000000) –