ColorMatrixFilter色彩矩阵滤镜:

/**
*
* *----------------------------------------*
* | *** ColorMatrixFilter色彩矩阵滤镜 *** |
* *----------------------------------------*
*
* 编辑修改收录:fengzi(疯子、wu341、wgq341)
*
* 不会写代码,我是代码搬运工。
* 联系方式:QQ(493712833)。
*
* 随 笔: https://www.cnblogs.com/fengziwu/
*
* 版权协议:请自觉遵守LGPL协议,欢迎修改、转载、传播给更多需要的人。
* 免责声明:任何因使用此软件/程序导致的纠纷与软件/程序开发者无关。
* 日 期: 2019.05.10
*
* ---------------------- 实例 --------------------------- *
* 允许饱和度更改、色相旋转、亮度为 Alpha 以及各种其它效果。 您可以将滤镜应用于任何显示对象(即,从 DisplayObject 类继承的对象),例如 MovieClip、SimpleButton、TextField 和 Video 对象,以及 BitmapData 对象。
* 注意:对于 RGBA 值,最高有效字节代表红色通道值,其后的有效字节分别代表绿色、蓝色和 Alpha 通道值。
*
* mc.filters=[ColorMFUtils.brightness()]
*
* var bitmapData:BitmapData = new Img();//Img()是图片BitmapData
* var bitmap:Bitmap= new Bitmap(bitmapData);
* bitmapData.applyFilter(bitmapData,bitmapData.rect,new Point(),ColorMFUtils.brightness());
* addChild(bitmap)
*/ package fengzi.colors
{
import flash.filters.ColorMatrixFilter;
public class ColorMFUtils
{ /**
* 亮度调整
* @param value 取值为-255到255(设置RGB的色彩偏移就能调节其亮度)
* @return new ColorMatrixFilter
*/
public static function brightness(value:Number=1.0)
{
return new ColorMatrixFilter([1,0,0,0,value,
0,1,0,0,value,
0,0,1,0,value,
0,0,0,1,0]);
} /**
* 颜色反向
* @param value 取值为0到255(把RGB通道的原通道乘数设为-1,然后再把色彩偏移量设为255就行了)
* @return new ColorMatrixFilter
*/
public static function colorReversal(value:Number=255)
{
return new ColorMatrixFilter([-1,0,0,0,value,
0,-1,0,0,value,
0,0,-1,0,value,
0,0,0,1,0]);
} /**
* 图像去色
* 原理:只要把RGB三通道的色彩信息设置成一样;即:R=G=B,那么图像就变成了灰色,并且,为了保证图像亮度不变,同一个通道中的R+G+B=1:如:0.3086+0.6094+0.0820=1
*
* @return new ColorMatrixFilter
*/
public static function decoloring()
{
return new ColorMatrixFilter([0.3086, 0.6094, 0.0820, 0, 0,
0.3086, 0.6094, 0.0820, 0, 0,
0.3086, 0.6094, 0.0820, 0, 0,
0 , 0 , 0 , 1, 0]);
} /**
* 饱和度
* 当色彩饱和度低到一定成度的时候,就想当于给图像去色,所以跟图像去色,有着千丝万缕的联系;
* value为原有通道信息保留量;可以理解为百分之几,等于0时完全去色,小于1时降低色度,大于1时增加色度,等于2时色度翻一倍,等于3时……。注意:RGB的原有通道信息保留量都应该相等,不然会产生偏色。
*
* value是原通道色彩保留量:所以,在原通道中,我们都+ N,这是不能被别的通道瓜分的。剩余的就是(1-value),就让RGB按0.3086, 0.6094, 0.0820的比例还瓜分这个剩余量吧。
*
* @param value 取值为0到2,当然也可以更高。
* @return new ColorMatrixFilter
*/ public static function saturation(value:Number=2)
{
return new ColorMatrixFilter([
0.3086*(1-value) + value, 0.6094*(1-value), 0.0820*(1-value), 0, 0,
0.3086*(1-value), 0.6094*(1-value) + value, 0.0820*(1-value), 0, 0,
0.3086*(1-value), 0.6094*(1-value), 0.0820*(1-value) + value, 0, 0,
0, 0, 0 , 1, 0]);
} /**
* 对比度
* 所谓对比度就是让红的更红,绿的更绿……或反之。
* 设置色彩偏移量 offset。具体要偏移多少呢,我们找到了一个折中的方案:128(1-value);即:一幅图像,不论很亮或很黑,但对比度为0了,最终得到的都是一幅中性灰度的图像(128),
*
* @param value 取值为0到10
* @return new ColorMatrixFilter
*/ public static function contrast(value:Number=10)
{
return new ColorMatrixFilter([value,0,0,0,128*(1-value),
0,value,0,0,128*(1-value),
0,0,value,0,128*(1-value),
0,0,0,1,0]);
} /**
* 阈值
* 所谓阈值,就是以一个色度值为基准对图像作非黑即白的处理(注意没有灰色),由于不去除了彩色属性,因此,也离不开0.3086, 0.6094, 0.0820这三组神奇的数字。
* 当RGB三个通道的色彩信息一模一样时,图像就失去了色彩(去色),从0.3086*256,0.6094*256,0.0820*256,0,-256*value可以看出图像已经去色了,并且,(*256)亮度已经翻了256倍(当然也可以是255);我们知道,RGB的有效值是0-255,即:0,1,2……255,把这些值乘以255以后会出现什么情况呢?但是除了0之外,别的全都大于或等于255了,所以此时的图像除了剩有几个黑点外,其它的全都变成白色了
*
* @param value 取值为0到255
* @return new ColorMatrixFilter
*/ public static function threshold(value:Number=64)
{
return new ColorMatrixFilter([
0.3086*256, 0.6094*256, 0.0820*256, 0, -256*value,
0.3086*256, 0.6094*256, 0.0820*256, 0, -256*value,
0.3086*256, 0.6094*256, 0.0820*256, 0, -256*value,
0, 0, 0, 1, 0]);
} } }

  

ColorMatrixFilter色彩矩阵滤镜的更多相关文章

  1. ColorMatrixFilter色彩矩阵滤镜;

    包 flash.filters 类 public final class ColorMatrixFilter 继承 ColorMatrixFilter  BitmapFilter  Object 使用 ...

  2. ColorMatrixFilter色彩矩阵滤镜(as3)

    matrix是一个长度为4*5=20的数组,其构成如下所示: R  ,G,  B,  A, offset [1,  0,  0,  0,  0]); // red [0,  1,  0,  0,  0 ...

  3. 颜色矩阵 滤镜 ColorMatrix

    颜色矩阵原理 色彩的三要素 1.色相.色相通俗的说就是"颜色",色相的改变就是颜色的改变,色相的调节伴随着红橙黄绿蓝紫的变化. 2.亮度.明度通俗的说就是"光照度&quo ...

  4. Paint的ColorFilter

    一.简介 setColorFilter(ColorFilter filter) 设置颜色过滤,这个方法需要我们传入一个ColorFilter参数同样也会返回一个ColorFilter实例.我们在set ...

  5. 精通BitmapData

    一.构造方法: var bmd:BitmapData=new BitmapData(200,100,true,0xffff0000); 参数说明: 1.宽 2.高 3.是否使用32位填充位图(包括al ...

  6. AS3 滤镜相关

    <ignore_js_op> package {        import flash.display.Sprite;        import flash.filters.BlurF ...

  7. 【CSS3】 理解CSS3 transform中的Matrix(矩阵)

    理解CSS3 transform中的Matrix(矩阵) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu ...

  8. 理解CSS3 transform中的Matrix(矩阵)

    一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如“拉普拉斯不等式”).这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面“Matrix(矩阵) ...

  9. 理解CSS3 transform中的Matrix(矩阵)——张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2427 一.哥,我被你 ...

随机推荐

  1. cube.js 学习(十)cube 来自官方的学习网站

    尽管cube.js 包含了一个doc 站点,但是资料不是很全,同时如果查看了cube github 代码中的一些demo的话,发现还是很不错的 但是一些实践没有在文档展现出来,还好我们可以从cube ...

  2. 学生管理系统(Nodejs)

    一.项目介绍 ①使用nodejs+bootstrap开发 ②对文件进行合理的模块化 ③实现基本的增删改查功能 二.思路 ①处理模块,处理模块,配置开发静态资源,配置模块引擎 ②路由设计,提取路由模块 ...

  3. render函数、createElement函数与vm.$slots

    1.render函数.createElement函数 Vue.component('es-header', { render: function (createElement) { return cr ...

  4. shell脚本编程基础之函数

    函数 作用:代码重用 定义函数: 方法1: function FUNCTION_NAME { #函数名和定义变量名一样,只能包含数字字母下划线,并且不能以数字开头 command } 方法2: FUN ...

  5. 关于html异步加载外部json文件报错问题

    一. HTML代码如下: 参考网站(echarts-JSON请求数据):https://blog.csdn.net/you23hai45/article/details/51585506 <!D ...

  6. (10)Go结构体struct

    结构体 Go语言中的基础数据类型可以表示一些事物的基本属性,但是当我们想表达一个事物的全部或部分属性时,这时候再用单一的基本数据类型明显就无法满足需求了,Go语言提供了一种自定义数据类型,可以封装多个 ...

  7. spring boot +dubbo+zookeeper

    dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 结合本公司的开发也是用的dubbo这款优秀的框架,加上 最近工作重心的.所以对于dubbo的 ...

  8. ubuntu之路——day16 只用python的numpy在底层检验神经网络的优化算法

    首先感谢这位博主整理的Andrew Ng的deeplearning.ai的相关作业:https://blog.csdn.net/u013733326/article/details/79827273 ...

  9. 使用CAS实现单点登录功能

    目录 单点登录 简介 CAS服务器部署 上传tomcat服务器压缩到文件夹/usr/local/cas目录下,解压,修改tomcat文件夹名为tomcat 修改tomcat配置文件的端口号 关闭tom ...

  10. md5加密后不能解密

    MD5加密原理是散列算法,散列算法也称哈希算法.计算机专业学的数据结构就有哈希表这一知识点.比如10除以3余数为一,4除以3余数也为一,但余数为一的就不知道这个数是哪个了.所以md5不能解密.就算是设 ...