Javascript 将半透明转换为纯色的算法
假设我的颜色是rgba255,0,0,0.5,背景是白色。可以看到的颜色几乎与rgba255、140、140、1相同,rgba255、140、1是纯色。我正在寻找一种算法,它可以将白色上的半透明颜色转换为纯色,这样当它彼此相邻时,它看起来几乎一样,如下图所示 我注意到,如果有两个分量r、g或b为0,则必须保持not null分量的值,并将null分量调整为相同的值,使其与白色匹配。我猜这个值取决于半透明颜色的alpha分量。但我似乎找不到公式。案件的其余部分呢?我认为一定有一个可以应用的通用公式 我在伪代码、JavaScript、java、python、C++或C++中寻找答案。Javascript 将半透明转换为纯色的算法,javascript,colors,pseudocode,rgba,Javascript,Colors,Pseudocode,Rgba,假设我的颜色是rgba255,0,0,0.5,背景是白色。可以看到的颜色几乎与rgba255、140、140、1相同,rgba255、140、1是纯色。我正在寻找一种算法,它可以将白色上的半透明颜色转换为纯色,这样当它彼此相邻时,它看起来几乎一样,如下图所示 我注意到,如果有两个分量r、g或b为0,则必须保持not null分量的值,并将null分量调整为相同的值,使其与白色匹配。我猜这个值取决于半透明颜色的alpha分量。但我似乎找不到公式。案件的其余部分呢?我认为一定有一个可以应用的通用公式
此外,我没有在任何项目上工作。这个问题是为了学习和帮助可能需要这个的人 我知道这个从rgba到rgb的转换公式
function rgba2rgb(background, color) {
const alpha = color[3]
return [Math.floor((1 - alpha) * background[0] + alpha * color[0] + 0.5),
Math.floor((1 - alpha) * background[1] + alpha * color[1] + 0.5),
Math.floor((1 - alpha) * background[2] + alpha * color[2] + 0.5)]
}
console.log(rgba2rgb([255, 255, 255], [255, 0, 0, 0.5])) // [ 255, 128, 128 ]
但这不适合你的例子我知道从rgba到rgb的转换公式
function rgba2rgb(background, color) {
const alpha = color[3]
return [Math.floor((1 - alpha) * background[0] + alpha * color[0] + 0.5),
Math.floor((1 - alpha) * background[1] + alpha * color[1] + 0.5),
Math.floor((1 - alpha) * background[2] + alpha * color[2] + 0.5)]
}
console.log(rgba2rgb([255, 255, 255], [255, 0, 0, 0.5])) // [ 255, 128, 128 ]
但这不适合你的例子这正是我想要的,除了我有像rgbr,g,b这样的CSS格式的颜色,但我自己可以计算出来。这正是我想要的,除了我有像rgbr,g,b这样的CSS格式的颜色,但我自己可以计算出来。