8位十六进制/RGBA颜色亮度计算求助:网站对比度计算遇阻
如何计算RGBA与8位十六进制颜色的相对亮度?
计算网站对比度时,若需处理RGBA或8位十六进制颜色的相对亮度,可按以下方法执行:
一、8位十六进制颜色的相对亮度计算
相对亮度(Relative luminance)在sRGB色彩空间中定义为:归一化后0代表纯黑,1代表纯白,计算公式为:L = 0.2126 * R + 0.7152 * G + 0.0722 * B
具体计算步骤:
- 十六进制转8位RGB值:将十六进制颜色(如
#RRGGBB)的RR、GG、BB分量分别转换为0-255的十进制数值,记为R8bit、G8bit、B8bit。 - 归一化到sRGB范围:
RsRGB = R8bit / 255 GsRGB = G8bit / 255 BsRGB = B8bit / 255 - 伽马校正:对每个归一化后的通道值做非线性转换:
if RsRGB <= 0.03928: R = RsRGB / 12.92 else: R = ((RsRGB + 0.055) / 1.055) ** 2.4 if GsRGB <= 0.03928: G = GsRGB / 12.92 else: G = ((GsRGB + 0.055) / 1.055) ** 2.4 if BsRGB <= 0.03928: B = BsRGB / 12.92 else: B = ((BsRGB + 0.055) / 1.055) ** 2.4 - 计算最终相对亮度:代入开头的
L公式即可得到结果。
二、RGBA颜色的相对亮度计算
RGBA包含透明度通道,需先将其与背景色混合为不透明RGB颜色,再按上述步骤计算:
- 转换透明度值:将Alpha通道的0-255数值转换为0-1的小数(
A = Alpha / 255)。 - 与背景色混合:假设背景色的8位RGB值为
R_bg、G_bg、B_bg,前景色的8位RGB值为R_fg、G_fg、B_fg,混合后的RGB值为:R = A * R_fg + (1 - A) * R_bg G = A * G_fg + (1 - A) * G_bg B = A * B_fg + (1 - A) * B_bg - 计算相对亮度:将混合后的
R、G、B按8位十六进制颜色的步骤计算相对亮度。
内容的提问来源于stack exchange,提问作者Jenny Fer
相关产品推荐
相关产品推荐

