假设我有2种颜色:实心背景色(6位十六进制值)和带有不透明度的叠加色(6位十六进制值和一些不透明度百分比)。
得到有效的合成颜色(6位十六进制值)的函数是什么?换句话说,如果我在同一区域(首先是背景,然后是重叠)绘制两种颜色,然后使用滴管工具获得颜色值,我如何编程获得相同的颜色值?
任何编程语言(甚至是伪代码)在这里都很好。
发布于 2018-12-03 14:49:06
您需要阿尔法合成公式:
result_red = fg_red * α_fg + bg_red * (1 - α_fg)
result_blue = fg_blue * α_fg + bg_blue * (1 - α_fg)
result_green = fg_green * α_fg + bg_green * (1 - α_fg)
您可以在W3C候选推荐中找到更多信息和示例。
发布于 2018-11-19 19:41:24
RGB颜色代码(和十六进制)有三个不同的部分--红色、绿色和蓝色的值。要找到两种颜色的“和”,您需要单独计算每个部分的平均值,然后将它们重新组合在一起。下面是一些JavaScript,它将两种颜色分割成数字数组,平均值它们的值,并返回一个新数组。这也适用于RGBA。
function calcColorAverages(firstColor, secondColor){
let newColor = [];
for(let index in firstColor){
let colorOne = firstColor[index]
let colorTwo = secondColor[index]
let average = Math.round((colorOne + colorTwo) / 2);
newColor[index] = average;
}
return newColor
}
let red = [255, 0, 0]
let blue = [0, 0, 255]
let purple = calcColorAverages(red, blue)
console.log(purple) //128, 0, 128
https://stackoverflow.com/questions/53384506
复制相似问题