2017-08-05 58 views
1

在Chrome中进行实验表明rgba()颜色被解释为未预乘alpha。 (我还没有尝试过#RRGGBBAA的颜色,因为Chrome默认不支持这些颜色。)CSS颜色预乘或不?

有没有这方面的官方规格?

回答

0

如果CSS要使用预乘alpha,那就意味着例如rgb(255, 0, 0)在50%不透明度将必须是rgba(127.5, 0, 0, 0.5)。而rgba(255, 0, 0, 0.5)将是无效的。

The latest version of the spec提到了rgbrgba

前三个参数分别指定颜色的红色,绿色和蓝色通道。 0%表示sRGB色域中该颜色通道的最小值,100%表示最大值。 A等于a,但具有不同的范围:0再次表示颜色通道的最小值,但255表示最大值。

这定义了非预乘值。如果数值是或可能是预先倍增的,这将不得不根据阿尔法值说明最大值。

The CSS3 speck2snowman69链接并不是特定的,但同样没有提及RGB值取决于alpha值的任何内容,并且包括如果它们被预倍增则无效的示例。

我不认为API会使用预乘alpha,除非这些API预计能够处理已经以某种方式进行了部分处理的图像数据,例如在图像处理库中。预乘alpha通道是为了简化颜色混合计算而完成的。这对于最终用户来说并不是什么好事。