具有Alpha通道的图片合并
2015-09-16 21:00
253 查看
具有Alpha通道的图片合并: 现在要计算怎么合并两个具有Alpha值的图片成为一个具有Alpha值的图片: 设: 第一层的不透明度是 a1(范围0-1),颜色是c1(范围0-255) 第二层的不透明度是 a2(范围0-1),颜色是c2(范围0-255) 两层合并后的不透明度是a,颜色是c 则对任意的底色X(范围0-255)都有: 合并一次的改变=两次合并的改变 第一次合并颜色= X(1-a1)+c1a1 第二次合并颜色= [X(1-a1)+c1a1](1-a2)+c2a2 得出: X(1-a)+ca=[X(1-a1)+c1a1](1-a2)+c2a2=X(1-a1)(1-a2)+c1a1(1-a2)+c2a2 于是有: 1-a=(1-a1)(1-a2) ca=c1a1(1-a2)+c2a2 所以两层合并的不透明度 a=1-(1-a1)(1-a2) 所以两层合并的颜色 c=[c1a1(1-a2)+c2a2]/a=[c1a1+c2a2-c1a1a2]/a 实例a: 底层:不透明1 颜色:37, 104, 8 上层:不透明0.8 颜色:104, 53, 8 合并后颜色值: 91, 63,8 37 * (1 - 0.8) + 104 * 0.8 = 90.6 约等于 91 104 * (1 - 0.8) + 53 * 0.8 = 63.2 约等于 63 8 * (1 - 0.8) + 8 * 0.8 = 8 实例b: 底层:不透明80 颜色:37, 104, 8 上层:不透明80 颜色:104, 53, 8 合并后颜色值: 93, 62,8 合并后的不透明度:1-(1-0.8)(1-0.8)=1-0.2*0.2=0.96 合并后的颜色: (37*0.8 + 104*0.8 - 37 * 0.8 * 0.8)/0.96 = 92.833333 约等于93 (104*0.8 + 53*0.8 - 104 * 0.8 * 0.8)/0.96 = 61.5 约等于62 实例C: 底层:不透明50 颜色:37, 104, 8 上层:不透明80 颜色:104, 53, 8 合并后颜色值: 96, 59,8 合并后的不透明度:1-(1-0.5)(1-0.8)=1-0.5*0.2=0.9 合并后的颜色: (37*0.5 + 104*0.8 - 37 * 0.5 * 0.8)/0.9 = 95.555555 约等于96 (104*0.5 + 53*0.8 - 104 * 0.5 * 0.8)/0.9 = 58.66666 约等于59 |
相关文章推荐
- delphi引用类的顺序
- 虚拟机下linux连不上网
- HDU2045:不容易系列之(3)—— LELE的RPG难题
- 在Ubuntu系统上轻松安装软件的方法和技巧
- BZOJ4259 : 残缺的字符串
- Android学习笔记之——GridView
- ubuntu下安装软件的三种方法
- Javascript常见浏览器兼容问题
- VB6.0 GetTcpTable 使用详解
- mysql sleep连接过多解决方法
- scrapy在爬取网页时使用随机user-agent方法
- ios开发-新浪微博-09(下拉菜单封装一)
- 为什么要重写hashcode()方法和equals()方法?
- 系统密码修改,SQLServer启动失败
- hdu1573(中国剩余定理定解的个数)
- ActiveMQ 即时通讯服务 浅析
- 详谈OC(object-c)深浅复制/拷贝-什么情况下用retain和copy
- Ubuntu14.04 下 OpenCV3 安装
- Photoshop的动作
- HDU 5446 Unknown Treasure Lucas+中国剩余定理+按位乘