具有Alpha通道的图片合并
来源:互联网 发布:淘宝 订单 清洗 编辑:程序博客网 时间:2024/04/29 21:22
具有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
- 具有Alpha通道的图片合并
- 图片的alpha 通道
- 前景图片alpha通道值的设置
- 前景图片alpha通道值的设置
- NGUI下alpha通道的分离与合并
- 移除Unity工程里所有图片的Alpha通道
- 移除Unity工程里所有图片的Alpha通道
- chapter12_2图片的通道分离与合并
- Unity工程里图片的RGB和Alpha通道的分离,以及显示所有带有Alpha通道贴图的Material
- Unity工程里图片的RGB和Alpha通道的分离,以及显示所有带有Alpha通道贴图的Material
- maskView配合带alpha通道图片
- 图片去掉alpha通道或透明度
- Alpha通道
- alpha通道
- 【改进版】Unity工程里图片的RGB和Alpha通道的分离
- Unity工程里图片的RGB和Alpha通道的分离
- 【计算机视觉】OPENCV对于有alpha通道的透明背景图片的读取和图片叠加
- OPENCV对于有alpha通道的透明背景图片的读取和图片叠加
- delphi引用类的顺序
- java线程学习(五)—java内存模型自己总结
- codeforces_#309_div2_B_554B
- HDU2045:不容易系列之(3)—— LELE的RPG难题
- 0916Android基础自定义View(Canvas绘图)
- 具有Alpha通道的图片合并
- 【UIActivityIndicator活动指示器控件】
- 面试题_线程的生命周期
- JSP九大内置对象、四大作用域以及session的生命周期
- hdu 5443 The Water Problem
- MFC中多个子菜单对应同一个消息响应函数
- 【小白谈编程】之三
- Leetcode Permutation Sequence
- innodb_flush_method&innodb_flush_log_at_trx_commit