一、滤色screen混合模式速览
screen
混合模式,国内称为“滤色”,其计算公式是:
公式中的C表示最终混合的RGB色值(范围是0-255),A和B表示用来混合的两个颜色的RGB色值(范围也是0-255)。
从公式的内容可以看出,滤色混合模式的颜色,是将两个颜色的互补色的像素值相乘,然后除以255的互补色值。
例如有一个红色,其RGB值是(255,0,0)
,还有一个蓝色,其RGB值是(0,0,255)
,则这两个颜色使用滤色混合模式之后的颜色色值是:
- R = 255 – (255 – 255) * (255 – 0) / 255 = 255
- G = 255 – (255 – 0) * (255 – 0) / 255 = 0
- B = 255 – (255 – 0) * (255 – 255) / 255 = 255
于是最终的色值是 RGB(255,0,255) ,也就是下面这个色块的颜色:
然后下面这个是应用mix-blend-mode:screen
代码的实时混合色值效果:
可以看到,两个色块呈现的颜色是一模一样的,既验证了公式的正确性,也对滤色模式有了第一次的认识。
二、滤色模式的特性与web应用
以下是一些直观的特性:
- 任何颜色和黑色执行滤色,还是呈现原来的颜色;
- 任何颜色和白色执行滤色得到的是白色;
- 任何颜色和其他颜色执行滤色模式混合后的颜色会更浅,有点类似漂白的效果。
滤色模式模式对于在图像中创建霓虹辉光效果是非常有用的,这一特性对于Web开发也同样受用。
我们经常需要对一些图像素材添加一些场景特效,比如说各种天气,或者霓虹辉光效果等。
传统做法是使用一张透明的PNG图像覆盖在上面,但是使用PNG透明前景图有下面2个缺点:
- 效果不自然,缺少那种跟底图完全融为一体的感觉;
- 图片的尺寸实在是太大了,动不动就上百K;
现在,有了滤色模式模式,我们只要准备一张黑色底色的jpg图片就可以了,应用screen混合模式,不仅可以跟底图完全融为一体,且使用的前景图片的文件尺寸只有PNG图片的1/10。
例如我们有下面一张底图,森林和小鹿:
然后,有以下一些特效前景图:
分别和提供的底图进行混合,可以看到如下图所示的实时效果:
可以看到效果很棒很自然。而这里使用的前景素材尺寸300*400,尺寸仅20K左右,开销非常小。
还能应用于HTML video视频
滤色混合模式不仅可以作用于图像,还可以用于视频,同样的,只要我们把视频的底色做成黑色,就能很好得和网页背景融为一体。
例如这里有个网页截图,还有一个二次元风格的场景图:
然后还有两个黑色背景的视频特效素材,分别是礼花绽放和瓢泼大雨(视频不动请点击):
通过设置video元素混合模式为screen,可以得到下面所示的精彩效果(视频不动请点击):
为网页动效的实现增加了新的思路。
三、滤色混合模式的兼容性
滤色混合模式的兼容性还是很溜的,2014年底就开始支持,目前已经快5年了,按照手机的更新速度,只要你的产品不是国民级的,移动端是可以放心使用的。
由于Edge拥抱Chrome浏览器,因此,Edge75也是支持了,可以预见,10年后,等window7系统没有人使用的时候,PC端也可以绽放光彩了。
无论在哪个语言中,无论是什么设计工具,滤色混合模式都是非常基础,非常常见的一种混合模式,如果你致力于在图形表现领域有所作为,一定要把这种模式的混合算法、特效以及应用场景记得滚瓜烂熟。
好了,本文内容就这些,感谢阅读!