【问题标题】:Are CSS colors premultiplied or not?CSS颜色是否预乘?
【发布时间】:2017-08-05 19:00:40
【问题描述】:

在 Chrome 中进行实验表明 rgba() 颜色被解释为非预乘 alpha。 (我没有尝试过 #RRGGBBAA 颜色,因为 Chrome 默认不支持它们。)

这方面有官方规范吗?

【问题讨论】:

    标签: html css colors


    【解决方案1】:

    如果 CSS 使用预乘 alpha,这意味着例如不透明度为 50% 的 rgb(255, 0, 0) 必须是 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 表示最大值。

    这定义了非预乘值。如果值是或可能是预乘的,这将不得不说明取决于 alpha 值的最大值。

    The CSS3 speck2snowman69 的链接没有那么具体,但同样没有提及任何关于 RGB 值取决于 alpha 值的内容,并且包括如果它们被预乘将无效的示例。

    我认为 API 不会使用预乘 alpha,除非这些 API 能够处理已经以某种方式部分处理过的图像数据,例如在图像处理库中。预乘 Alpha 通道是为了简化颜色混合计算。这实际上并不能帮助最终用户。

    【讨论】:

      【解决方案2】:

      如果我想说它会在 W3C 规范中定义

      http://www.w3.org/TR/css3-color/#rgba-color

      如果没有在那里定义,这取决于每个浏览器的实现,这就是问题所在......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-09
        • 1970-01-01
        • 1970-01-01
        • 2017-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-07
        相关资源
        最近更新 更多