讲 Alpha 混合的文章太多了,我并非要说有什么新的更好的算法,而是这些 Alpha 混合的文章都是基于一种特定的现实应用:在背景色上叠加一个半透明色。而 OpenPainter 的需求更具一般性:混合两个半透明颜色。也就是说,原始色也是有透明度的。

为此我首先用 PS 做了不少试验,试图推导出 Alpha 混合的公式。其实,一些简单的实验外加一些逻辑推理,成功了找到了 Alpha 混合的方法。这里为了计算上的方便,全部颜色分量值的取值范围都是 0 ~ 1。

首先是透明度值的计算。颜色在本质上是光的产物,假设把透明度理解为玻璃的透光性,则一切就变得很easy。比如一个 alpha = 0.2 的颜色,就能够将其想像为透光率为 80% 的彩色玻璃。我们透过这块玻璃看去,因为 80% 的光都透过了,因此留下来的颜色仅仅剩 20%,即所谓 0.2 的 alpha。如今我们来做一个混合:将 alpha 为 0.2 和 0.6 的颜色进行叠加。这时,我们有了两块玻璃,一块透光率为 80%,还有一块为 40%。一道光束穿过,经过 80% 透光率的玻璃时,光线强度剩下 80%,再经过 40% 透光率的玻璃时,光线进一步被削弱,仅仅剩下 80% * 40% = 32%。这意味着有 32% 的透明性,即 alpha = 0.68。

总结上面的算法,我们能够得出:

下一步,是依据已有的透明度来计算每一个通道的颜色分量。这其有用数学推导的方法更easy一些。我们已经知道,在背景色上怎样叠加半透明色,其 RGB 颜色分量的计算方法为:

那么,我们能够通过在背景色上叠加两个半透明颜色的不同方法来进行公式推导。第一种叠加方式:先在背景色上叠上第一个半透明颜色,再在叠好的结果上叠上第二个半透明颜色;另外一种方式则是先将两个半透明颜色叠好,再与背景色混合。即:

这两种混合方式的结果应当是全然一致的,则有

整理,得

这即是 RGB 模式下的 Alpha 混合公式。对于 CMYK 等其它模式,也能够用类似的方式推导。

参考:https://www.cnblogs.com/mfryf/p/3401503.html?_t_t_t=0.581313765142113

两个半透明颜色色的叠加计算方法相关推荐

  1. 在html图片上方叠加一个半透明颜色层,并在半透明颜色层上叠加文字

    话不多说,直接看代码,效果 效果图: html代码 <div class="bg_img"><!--图片--><img src="../ph ...

  2. 两个RGBA四通道颜色的叠加计算方法与代码实现

    叠加算法原理: 通过一些简单的实验外加一些逻辑推理,可以成功的找到 Alpha 混合的方法.这里为了计算上的方便,全部颜色分量值的取值范围都是 0 ~ 1. 首先是透明度值的计算.颜色在本质上是光的产 ...

  3. 用VB实现两幅图片半透明叠加

    代码很简单,就不解释了,演示VB如何实现两幅图片半透明叠加的效果. Option ExplicitPrivate Declare Function CreateCompatibleDC Lib &qu ...

  4. 你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。 抓取多少个就可以确定你肯定有两个同一颜色的果冻?(5秒-1分钟)

    你有一桶果冻,其中有黄色.绿色.红色三种,闭上眼睛抓取同种颜色的两个. 抓取多少个就可以确定你肯定有两个同一颜色的果冻?(5秒-1分钟) 分析: 1.里面有三种颜色时,需要4个 2.里面有2种颜色时, ...

  5. imageJ两张图像融合 我怎么叠加三通道 imageJ叠加

    imagJ如何将两张图像merge在一起_fK0pS的博客-CSDN博客_imagejmerge合并图片 一定程度上解决了问题. imageJ两张图像融合 我怎么叠加三通道 imageJ叠加 Over ...

  6. 两个RGB的颜色半透明混色算法

    各点像素的RGB值是按一定比例混合而成的,这个比例由Alpha值决定,具体算式见下:           Alpha   =   0   ~   100     R   =   (   R1   * ...

  7. 用opencv实现两张半透明png图片以一定透明度叠加

    例如我有如下两张透明.半透明图: 在photoshop中打开如下: 前景:一张四通道的png图,BGR通道的值全为[0,0,200],透明度完全靠alpha通道的不同值来体现. 后景:一张四通道的pn ...

  8. Android九点阵手势识别,能量黑科技模块八-九:两路按键颜色手势魔块

    8. 两路按键魔块 模块一共有两路硅胶按键,可以检测按键是否按下.当按键按下时,对应按键背后的红色LED会亮,并且返回触发信号,按键按下事件为真.另外按键键帽上可安装乐高十字插销. 8.1. 详细介绍 ...

  9. ubuntu16.04 Linux+xfce4的文件夹出现两种背景颜色+文件夹中右键打开终端失灵了.

    好不容易把xfce4的文件夹弄成了夜间模式,结果用着用着发现文件夹有两种颜色 可以看到一种豆沙绿,一种是黑色的. 这个问题困扰我好几个月了..总是用着用着就发现居然变成了两种颜色. 还有更稀奇古怪的, ...

最新文章

  1. 高性能计时器Timer的设计(时间轮和时间堆两种方式)
  2. UVA - 11584 Partitioning by Palindromes(划分成回文串)(dp)
  3. 【开机自启】属于你的个性化!八步完成喜欢的软件开机自启!
  4. matlab绘图 excel,『在matlab上如何导入excel表格然后画图』excle表格如何使用绘图笔...
  5. Liveness 探测 - 每天5分钟玩转 Docker 容器技术(143)
  6. 基于java springboot+mybatis学生学科竞赛管理管理系统设计和实现
  7. metronic-Website Template
  8. [转载]关于webbrowser,innet,xmlhttp获取网页源码的比较!
  9. Angular 自动编译部署 Tomcat Jboss
  10. python定义一个1xn矩阵_Python实现的矩阵类实例
  11. 收音机磁棒天线4根接法_重磅彩蛋:DE1103收音机不用打磨就能用拉杆/外接天线收中波...
  12. springboot整合rabbitmq之延时队列
  13. 关于ROHDESCHWARZ公司电流探头EZ-17系数修正的说明 1
  14. 『迷你教程』机器学习的Bootstrap及Python实现
  15. python echo含义_echo什么意思
  16. 基于ELK的日志系统最佳实践
  17. 【财富空间】年终重磅:解密全球30家搅局者和355家上市路上的科技公司
  18. IDEA常用快捷键罗列,分享分享
  19. 如何放大或缩小浏览器的显示字体
  20. 百度宣布首例"人工智能"寻找走失儿童完成

热门文章

  1. 计算机word试题问答题,计算机一级考试选择题题库之Word题及答案(版).docx
  2. android Textview文字超出显示省略号
  3. vivox27计算机功能,vivox27都有什么功能
  4. python123不能登录_最近教务系统升级了。。用 python 爬时, URL 被加密了无法操作模拟登陆...
  5. 西安出差已经一年多了
  6. 使用tar+lz4/pigz+ssh更快的数据传输
  7. Mysql 查询区分大小写的两种方法
  8. 【更新中】Unity 2020 发行说明(XR相关汇总)
  9. 瓜子二手车严选直卖店落地深圳 实现“三大打通”成行业新标杆
  10. 【网络通讯开发系列】如何抓取终端设备的TLS报文(一)