RGBA alpha 透明度混合算法 .
分类: 图像处理 Ps技术 2011-05-25 09:11 1112人阅读 评论(0) 收藏 举报
Alpha 透明度混合算法,网上收集整理,分成以下三种:

一、 R1,G1,B1,Alpha1 为前景颜色值,R2,G2,B2,Alpha2 为背景颜色值,则

前景色 R = R1 * Alpha1 + R2 * Alpha2 * (1-Alpha1) ;

G = G1 * Alpha1 + G2 * Alpha2 * (1-Alpha1) ;

B = B1 * Alpha1 + B2 * Alpha2 * (1-Alpha1) ;

背景色 Alpha = 1 - (1 - Alpha1) * ( 1 - Alpha2) ;

R = R / Alpha ;

G = G / Alpha ;

B = B / Alpha ;

二、半透明算法:
混合算法目前在常用到的算法是AlphaBlend。
计算公式如下:假设一幅图象是A,另一幅透明的图象是B,那么透过B去看A,看上去的图象C就是B和A的混合图象,
设B图象的透明度为alpha(取值为0-1,1为完全透明,0为完全不透明).
Alpha混合公式如下:
R(C)=(1-alpha)*R(B) + alpha*R(A)
G(C)=(1-alpha)*G(B) + alpha*G(A)
B(C)=(1-alpha)*B(B) + alpha*B(A)
R(x)、G(x)、B(x)分别指颜色x的RGB分量原色值。从上面的公式可以知道,Alpha其实是一个决定混合透明度的数值。
改变这个 alpha 值可以得到一个渐变的效果。

分离RGB色用"位与"、"移位"运算的方法;

透明的比例按2的N次幂来分级,这样可以快速运算。
如果是按32级
Alpha = 1/32
B图的权重 = (32-n)/32,则A图的权重= n/32,

可以得到这样的算法:

R(C)= (32-n) * R(B)+ n* R(A);
再对R(C)右移5位(除以32)就可以了

透明的处理:
假设指定B上的黑色透明色,则碰到B上的颜色为黑色,则不显示黑色,改为显示A上这个位置的颜色。

三、简易Alpha混合算法:首先,要能取得上层与下层颜色的 RGB三基色,

然后用r,g,b 为最后取得的颜色值;r1,g1,b1是上层的颜色值;r2,g2,b2是下层颜色值

若Alpha=透明度,则

当Alpha=50%时,

r = r1/2 + r2/2;

g = g1/2 + g2/2;

b = b1/2 + b2/2;

当Alpha<50%时,

r = r1 - r1/ALPHA + r2/ALPHA;

g = g1 - g1/ALPHA + g2/ALPHA;

b = b1 - b1/ALPHA + b2/ALPHA;

当Alpha>50%时,

r = r1/ALPHA + r2 - r2/ALPHA;

g = g1/ALPHA + g2 - g2/ALPHA;

b = b1/ALPHA + b2 - b2/ALPHA;

RGBA alpha 透明度混合算法的更多相关文章

  1. RGBA alpha 透明度混合算法实现和测试

    目录 1.算法叙述 1.1.透明度混合算法1 1.3.简易Alpha混合算法 2.算法实现代码和测试 2.1.透明度混合算法1实现代码 2.1.AlphaBlend算法实现代码 2.3.测试截图 2. ...

  2. OpenCV——PS 图层混合算法(一)

    详细的算法原理能够參考 PS图层混合算法之中的一个(不透明度,正片叠底,颜色加深,颜色减淡) // PS_Algorithm.h #ifndef PS_ALGORITHM_H_INCLUDED #de ...

  3. OpenCV——PS图层混合算法(六)

    具体的算法原理可以参考: PS图层混合算法之六(差值,溶解, 排除) // PS_Algorithm.h #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGO ...

  4. [UnityShader基础]03.透明度混合

    如果要渲染半透明物体,那么就需要用到透明度混合. 需要注意的有这几点: 1.设置标签:Tags { "Queue"="Transparent" "Ig ...

  5. Python: PS 图层混合算法汇总

    本文用 Python 实现了PS 中的图层混合算法,把很多常见的图层混合算法都汇总到了一起,比起以前写的算法,就是用矩阵运算代替了很耗时的for 循环,运行效率有所提升.具体的代码如下: import ...

  6. css中filter:alpha透明度使用

    css中filter:alpha透明度使用    使用filter可以设置透明度,filter:alpha在IE下是没有问题的,要支持firefox就需要使用-moz-opacity,下面有个不错的示 ...

  7. OpenCV——PS 图层混合算法 (三)

    具体的算法原理可以参考 PS图层混合算法之三(滤色, 叠加, 柔光, 强光) // PS_Algorithm.h #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ ...

  8. OpenCV——PS 图层混合算法 (二)

    具体的算法原理可以参考 PS图层混合算法之二(线性加深,线性减淡,变亮,变暗) // PS_Algorithm.h #ifndef PS_ALGORITHM_H_INCLUDED #define PS ...

  9. OpenCV——PS 图层混合算法 (四)

    具体的算法原理可以参考 PS图层混合算法之四(亮光, 点光, 线性光, 实色混合) // PS_Algorithm.h #ifndef PS_ALGORITHM_H_INCLUDED #define ...

随机推荐

  1. DockerFile优化总结

    1- dockerFile为什么要优化 ___ 随着我们对docker镜像的持续使用,在此过程中如果不加以注意并且优化,镜像的体积会越来越多.很多时候我们在使用docker部署应用时,会发现镜像的体积 ...

  2. bootstrap 兼容 IE8

    在 html 中引用 <!-- bootstrap 兼容 IE8 --> <script src="../../jsapi/js/html5shiv.min.js" ...

  3. 解决Mac无法写入U盘问题

    注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 本文源链接:https://www.cnblogs.com/chloneda/p/upan-to- ...

  4. WPF DataGrid标题Header Binding失效

    前言:因业务需要对WPF中的DataGrid控件中的行数进行统计,同时把统计的行数显示在列标题上. 如果我们用常规的Binding手段更新DataGridTextColunm的Header的话是不会生 ...

  5. C#实例之简单聊天室(状态管理)

    前言        状态管理是在同一页或不同页的多个请求发生时,维护状态和页信息的过程.因为Web应用程序的通信协议使用了无状态的HTTP协议,所以当客户端请求页面时,ASP.NET服务器端都会重新生 ...

  6. 【spring boot】SpringBoot初学(5)– WebService之Jersey

    前言 github: https://github.com/vergilyn/SpringBootDemo 代码位置: 一.准备 spring boot对jersey1.x与jersey2.x的注入方 ...

  7. 剑指offer-面试题19-正则表达式匹配-字符串

    /* 题目: 实现一个函数用来匹配包含'.'和'*'的正则表达式. '.'表示比配任意字符,‘*’表示匹配0个或多个字符串. */ /* 思路: 采用递归的方法. 基础条件:当字符串和模式串存在空的情 ...

  8. 预防XSs和sql注入常见分析

    SQL注入简介SQL 注入漏洞(SQL Injection)是 Web 开发中最常见的一种安全漏洞.可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至有可 ...

  9. 网站后门shell-----eval

    我们先来看看网站被攻击的代码: <?php error_reporting(E_ERROR); unlink('user.php'); unlink('../member/login.php') ...

  10. jquery 调用点击事件

    触发 click 事件 $(selector).click()