美文网首页前端笔记
带Alpha通道的色彩叠加问题

带Alpha通道的色彩叠加问题

作者: 周骅 | 来源:发表于2017-06-23 18:44 被阅读0次

写于2015年3月23日,可能已过时,请谨慎参考。

css3的rgba色彩模式、png/gif图片的alpha通道、canvas的rgba色彩模式、css3的阴影、css3的opacity属性等等,这些应用在网页中,有意无意间,我们的页面多了许多半透明的效果。我们知道,在没有alpha通道的情况下,两个颜色叠加,上层的颜色会直接覆盖下层的颜色,但有了alpha通道,一切就没有这么简单了。今天,我们就要探讨一下,网页中,rgba(r1, g1, b1, a1) + rgba(r2, g2, b2, a2)会得到什么。

为表述方便,不妨假设最后我们得到的色彩是rgba(r, g, b, a)

先考虑透明度。一个色彩透明度opacity介于0到1之间,opacity = 0表示完全透明,opacity = 1表示不透明。把要叠加上来的色彩想象成一块玻璃,如果这块玻璃的透明度是0.2,意味着它允许透过80%的光线,阻挡20%的光线。
好,现在想象有两块玻璃,透明度分别是a1a2,那么光线的通过率分别为1 - a11 - a2。所以可以认为,光线穿过第一块玻璃后,剩余1 - a1;再通过第二块玻璃后,还有(1 - a1)(1 - a2),这就是两块玻璃的综合透光率,相应的,透明度就是1 - (1 - a1)(1 - a2)
所以我们能得到第一个结论:


,即

接下来考虑rgb各分量,它们的计算方法是一样的,我们仅以r通道为例,进行推导。还是想象一块半透明的玻璃,它本身是红色的,但由于它允许其他光线透过,所以玻璃本身的颜色会变淡。人们实际感受到的颜色,只是玻璃原本的颜色乘以透明度的结果。

如果有两块玻璃呢,它们的红色浓度分别是r1r2,透明度分别是a1a2。那么第一块玻璃让人感受到的红色浓度为r1a1,第二块玻璃让人感受到的红色浓度为r2a2,第一块玻璃的红色色彩穿过第二块玻璃,并与第二块的红色叠加在一起的颜色浓度就是:


接下来,我们再把两块玻璃合起来,当成一块玻璃,这个整体的红色浓度为r,透明度为a。这个a我们之前已经推导过了,是a1 + a2 - a1a2。那么,我们有:

由这两个等式,我们可以得出:

g和b两个分量上也是如此,在此从略。从推导出来的等式上,我们能直接得出一个结论:颜色叠加的运算,不具备交换率、结合率,也就是说,叠加的顺序很重要。

相关文章

  • 带Alpha通道的色彩叠加问题

    写于2015年3月23日,可能已过时,请谨慎参考。 css3的rgba色彩模式、png/gif图片的alpha通道...

  • iOS端保存带Alpha通道视频的实践

    一、背景 最近Blurrr新版本需求出来了,需要iOS客户端可以保存带Alpha通道视频。 那什么是带Alpha通...

  • alpha通道

    《OpenCV轻松入门:面向Python》读书笔记作者:李立宗出版社:电子工业出版社出版时间:2019-05 第4...

  • iOS开发之ERROR ITMS-90717: “Invalid

    项目打包上传 表示APPIcon图片含有alpha通道,让美工给一张不含alpha通道的即可

  • zbrush印出照片上的图案

    简捷的办法:菜单-alpha导入alpha图;切换layer笔刷,alpha通道选择导入的alpha图;在足够细分...

  • PNG8和PNG24的区别

    png图片,用photoshop打开看不到alpha通道。用gimp打开则能看到alpha通道。 转自:http:...

  • AppIcon和LaunchImage尺寸及注意事项

    一. LaunchImage 二. AppIcon 不能包括alpha通道, 顾在导出图片时注意以下问题:

  • APP上传的图片alpha通道问题

    遇到这问题真的很难受,还要找UI 来处理,当然自己会PS就更好了,其实MAC具备关闭alpha通道的操作, 操作步...

  • 图像的数组表示

    图像的RGB色彩模式 RGB三个颜色通道的变化和叠加得到各种颜色,其中各通道取值范围:R 0~255G 0~255...

  • iOS 修改图片alpha通道

    查看图片,发现图片的alpha通道为:否。 ----> 本地图片加载显示不出来查看图片,发现图片的alpha通道...

网友评论

    本文标题:带Alpha通道的色彩叠加问题

    本文链接:https://www.haomeiwen.com/subject/omaccxtx.html