文档章节

正确理解RGBA的含义

ueharaai
 ueharaai
发布于 2013/08/10 21:20
字数 444
阅读 181
收藏 0
点赞 0
评论 1

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

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

比如,如果屏幕上两个点的颜色分别是(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
博文 19
码字总数 18134
作品 0
徐汇
技术主管
加载中

评论(1)

中山野鬼
中山野鬼
这应该是处理图层的模块做的吧。和图片数据生成的模块没关系。包括尺寸拉伸。
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

分形算法小记

模式替换的分形,通常都可以使用L系统表示,想那些雪花曲线之类的都是模式替换分形的。L系统是指一个字符序列,这个字符序列内的某些子序列可以按照规则替换为特定的序列(通常更长),序列中...

刘地 ⋅ 2014/12/09 ⋅ 0

CSS更改網頁滾動條

CSS代碼本來就簡單,因此我不解釋了,直接貼代碼。當然如果覺得不好看可以自己改改啦。 ::-webkit-scrollbar{ width:17px; height:0px; background:-webkit-gradient(linear,left top,right...

Yorhom ⋅ 2012/08/10 ⋅ 0

AGG第五课 RGB颜色定义

混合器的存在是为了适应不同平台、不同需求下的不同像素格式。混合器有三种:agg::rgba,agg::rgba8和agg::rgba16,都是用来指定颜色的,rgba每个通道储存为double,rgba8为unsigned char,r...

技术小胖子 ⋅ 2017/11/07 ⋅ 0

RGB和RGBA之间的转换

function RGB2RGBA(rgbcolor,alp){ //注:rgbcolor的格式为#FFFFFFF var r = parseInt("0x" + rgbcolor.substr(1,2)); var g = parseInt("0x" + rgbcolor.substr(3,2)); var b = parseInt("......

lovethe51cto ⋅ 2016/03/28 ⋅ 0

CSS3基础效果

1.表单与背景的层次分开,关键知识点:rgba。就像这样:登陆 关键css代码: 2.设置透明度,opacity与rgba的区别关键css代码: 效果:上图中的div1中是文本选中状态,不然根本看不见。所以opa...

Anymore ⋅ 2016/11/18 ⋅ 0

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

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

tangweiqun ⋅ 2017/09/20 ⋅ 0

CSS3和jQuery实现的自定义美化Checkbox...

是不是比默认的好看多了,个人的审美观应该还是可以的。 当然我们可以在这里查看DEMO演示。 接下来我们一起来看看实现这款美化版Checkbox的源代码。主要思路是利用隐藏原来的checkbox和radio...

我输过但从未怕过 ⋅ 2016/05/11 ⋅ 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

echarts 文字标签云图实现方法

加载ECHART相关JS var myChart = echarts.init(document.getElementById('ChartOwnFansTag')); var option = { series : [ { type:'force', name : "Force tree", ribbonType: false, itemSt......

awin8516 ⋅ 2014/12/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 13分钟前 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 15分钟前 ⋅ 0

容器之查看minikue的environment——minikube的环境信息

执行如下命令 mjduan@mjduandeMacBook-Pro:~/Docker % minikube docker-envexport DOCKER_TLS_VERIFY="1"export DOCKER_HOST="tcp://192.168.99.100:2376"export DOCKER_CERT_PATH="/U......

汉斯-冯-拉特 ⋅ 16分钟前 ⋅ 0

mysql远程连接不上

设置了root所有hosts远程登录,可是远程登录还是失败,原因可能如下: 登录本地数据库 mysql -uroot -p123456 查询用户表 mysql> select user,host,password from mysql.user; 删除密码为空的...

冰公子 ⋅ 16分钟前 ⋅ 0

动态规划小题

凑硬币问题 问题: 有1元、3元、5元面值的硬币若干,要凑到11元需要最少几个硬币? 这是最简单的DP问题,记凑a元需要b个硬币为: n[a] = b。 1)首先,如果凑0元 需要0个硬币表示为 n[0] = 0...

阿豪boy ⋅ 18分钟前 ⋅ 0

shell之切换目录命令cd

让我们来看看linux下简单的 cd 命令,就是切换目录用的,在你当前的目录位置,进入下一个目录 让我们看看这个阿里云 ubuntu 目录,Linux虚拟目录中比较复杂的部分是它如何协调管理各个存储设...

woshixin ⋅ 21分钟前 ⋅ 0

使用 jsoup 模拟登录 urp 教务系统

需要的 jsoup 相关 jar包:https://www.lanzous.com/i1abckj 1、首先打开教务系统的登录页面,F12 开启浏览器调试,注意一下 Request Headers 一栏的 Cookie 选项,我们一会需要拿这个 Cook...

大灰狼时间 ⋅ 56分钟前 ⋅ 0

关于线程的创建

转自自己的笔记: http://note.youdao.com/noteshare?id=87584d4874acdeaf4aa027bdc9cb7324&sub=B49E8956E145476191C3FD1E4AB40DFA 1.创建线程的方法 Java使用Thread类代表线程,所有的线程对......

MarinJ_Shao ⋅ 今天 ⋅ 0

工厂模式学习

1. 参考资料 工厂模式-伯乐在线 三种工厂-思否 深入理解工厂模式 2. 知识点理解 2.1 java三种工厂 简单工厂 工厂模式 抽象工厂 2.2 异同点 逐级复杂 简单工厂通过构造时传入的标识来生产产品...

liuyan_lc ⋅ 今天 ⋅ 0

Java NIO

1.目录 Java IO的历史 Java NIO之Channel Java NIO之Buffer Java NIO之Selector Java NIO之文件处理 Java NIO之Charset Java 可扩展IO 2.简介 “IO的历史”讲述了Java IO API从开始到现在的发...

士别三日 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部