文档章节

正确理解RGBA的含义

ueharaai
 ueharaai
发布于 2013/08/10 21:20
字数 444
阅读 194
收藏 0

看到这个标题有人可能要喷了,这不简单,就是红绿蓝再加上透明度呗。

其实这里面有你可能会完全忽略的东西。

比如,如果屏幕上两个点的颜色分别是(1,1,1,0.8),(1,1,1,0.5),这两个点有什么不一样?

答案是两个点是完全一样的。

一般情况下,电脑的标准屏幕设备是不存在A这个分量的,A的存在只是用于我们计算。正因为A不是电脑设备的标准输出量,所以在不同的环境中RGBA表现的值并不一定是相同的。这点差异会导致最终的屏幕输出不一致的情况发生。

对于ALPHA的使用,大部分人应该都知道这个公式。

ALPHA混合后的值=(srcColor)*srcAlpha+(dstColor)*(1-srcAlpha)

注意到,对位图上的一个点来说,只要该点的颜色值不改变,srcColor*srcAlpha对那个点来说就是个常量。所以一些系统为了优化会预先把这个值乘上,结果是RGBA变成了(RA,GA,BA,A)。如果一个资源只在一个系统里显示操作,倒也没问题,但如果是系统间的切换,问题就来了。

如果你看到一个RBGA是(0.3,0.3,0.3,0.3)时,那么它究竟表示的是(0.09,0.09,0.09,0.3)还是(1,1,1,0.3)?这就得根据实际情况来了。如果RGBA是预乘的值,用alpha混合公式就会得出错误的结果,因为srcAlpha被乘了两道,图片看上去会比它本来的样子更黑一些(如果alpha只有0和1没有这个问题)。这时正确的公式应该是

(srcColor)+(dstColor)*(1-srcAlpha)



© 著作权归作者所有

共有 人打赏支持
ueharaai
粉丝 42
博文 22
码字总数 18134
作品 0
徐汇
技术主管
私信 提问
加载中

评论(1)

中山野鬼
中山野鬼
这应该是处理图层的模块做的吧。和图片数据生成的模块没关系。包括尺寸拉伸。
2018-10-05-今日得到-《自达尔文以来》

今天分享的主题来自得到的每天听本书系列之《自达尔文以来》 关于作者 斯蒂芬·古尔德是哈佛大学教授,演化生物学家和科学作家,他阐释了进化论的系列作品广受欢迎。 关于本书 《自达尔文以来...

韬声依旧在路上
10/05
0
0
spark2.x由浅入深深到底系列七之py4j在spark中python api的使用

学习spark的任何技术前请先正确理解spark,可以参考: 正确理解Spark 我们知道spark的RDD支持scala api、java api以及python api,我们分别对scala api与java api做了详细的介绍,本文我们将...

tangweiqun
2017/09/23
0
0
spark2.x由浅入深深到底系列六之RDD java api用JdbcRDD读取关系型数据库

学习任何的spark技术之前,请先正确理解spark,可以参考:正确理解spark 以下是用spark RDD java api实现从关系型数据库中读取数据,这里使用的是derby本地数据库,当然可以是mysql或者oracl...

tangweiqun
2017/09/20
0
0
spark2.x由浅入深深到底系列七之RDD python api详解二

学习spark任何技术之前请先正确理解spark,可以参考:正确理解Spark 本文详细介绍RDD python api的action操作。 先创建一个RDD: conf = SparkConf().setAppName("appName").setMaster("loca...

tangweiqun
2017/09/23
0
0
13、canvas操纵像素数据ImageData

一、ImageData 对象 含义: 存储canvas对象真实的像素数据(每个像素块的RGBA色值) 属性: 1、width:图片宽度,单位是像素 2、height:图片高度,单位是像素 3、data:图片中,所有像素的R...

飞向月球8
07/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

border实现等高布局

效果图 实现上图效果的全部html+css代码 <div class="box"> <nav> <h3 class="nav">导航1</h3> <h3 class="nav">导航2</h3> </nav> <section> <div cla......

呵呵闯
9分钟前
0
0
MaxCompute 表(Table)设计规范

表的限制项 表(Table)设计规范 表设计主要目标 表设计的影响 表设计步骤 表数据存储规范 按数据分层规范数据生命周期 按数据的变更和历史规范数据的保存 数据导入通道与表设计 分区设计与逻辑...

阿里云云栖社区
15分钟前
0
0
局域网共享文件读写的实现方式

代码片段 首先是设置共享目录,支持用户和密码等权限控制 然后我们可以使用Windows资源管理器操作共享目录下的文件 这中间隐藏了资源管理器帮我们建立目录映射和连接的过程,如果设置了用户名...

夏至如沫
24分钟前
2
0
Elasticsearch安装与配置

一、Docker安装ES 开发模式 可以使用以下命令快速启动Elasticsearch以进行开发或测试: $ docker run -p 9200:9200 -p 9300:9300 -d --name es -e "discovery.type=single-node" docker.ela...

吴伟祥
31分钟前
1
0
移动页面滚动穿透解决方案(荐)

移动页面滚动穿透解决方法目前有多种解决方案,我介绍下几种方案: 解决方案1:阻止冒泡。 //关键代码$(".sliders,.modals").on("touchmove",function(event){    event.preventDefau...

壹峰
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部