包 flash.filters
类 public final class ColorMatrixFilter
继承 ColorMatrixFilter BitmapFilter Object
使用 ColorMatrixFilter 类可以将 4 x 5 矩阵转换应用于输入图像上的每个像素的 RGBA 颜色和 Alpha 值,以生成具有一组新的 RGBA 颜色和 Alpha 值的结果。 该类允许饱和度更改、色相旋转、亮度为 Alpha 以及各种其它效果。 您可以将滤镜应用于任何显示对象(即,从 DisplayObject 类继承的对象),例如 MovieClip、SimpleButton、TextField 和 Video 对象,以及 BitmapData 对象。
注意:对于 RGBA 值,最高有效字节代表红色通道值,其后的有效字节分别代表绿色、蓝色和 Alpha 通道值。
一、构造方法:
ColorMatrixFilter(matrix:Array = null);
二、matrix属性详解:
注意;这里的matrix并不是Matrix的实例,其实是一个Array;
matrix:Array [read-write]
由 20 个项目组成的数组,适用于 4 x 5 颜色转换。 matrix 属性不能通过直接修改它的值来更改(例如 myFilter.matrix[2] = 1;)。 相反,必须先获取对数组的引用,对引用进行更改,然后重置该值。
颜色矩阵滤镜将每个源像素分离成它的红色、绿色、蓝色和 Alpha 成分,分别以 srcR、srcG、srcB 和 srcA 表示。 若要计算四个通道中每个通道的结果,可将图像中每个像素的值乘以转换矩阵中的值。 (可选)可以将偏移量(介于 -255 至 255 之间)添加到每个结果(矩阵的每行中的第五项)中。 滤镜将各颜色成分重新组合为单一像素,并写出结果。 在下列公式中,a[0] 到 a[19] 对应于由 20 个项目组成的数组中的条目 0 至 19,该数组已传递到 matrix 属性:
redResult = (a[0] * srcR) + (a[1] * srcG) + (a[2] * srcB) + (a[3] * srcA) + a[4]
greenResult = (a[5] * srcR) + (a[6] * srcG) + (a[7] * srcB) + (a[8] * srcA) + a[9]
blueResult = (a[10] * srcR) + (a[11] * srcG) + (a[12] * srcB) + (a[13] * srcA) + a[14]
alphaResult = (a[15] * srcR) + (a[16] * srcG) + (a[17] * srcB) + (a[18] * srcA) + a[19]
对于数组中的每个颜色值,值 1 等于正发送到输出的通道的 100%,同时保留颜色通道的值。
计算是对非相乘的颜色值执行的。 如果输入图形由预先相乘的颜色值组成,这些值会自动转换为非相乘的颜色值以执行此操作。
可使用两种经过优化的模式:
三、理解、体会;
matrix是一个长度为4*5=20的数组,其构成如下所示:
var matrix:Array = new Array();
// R ,G, B, A, offset
matrix = matrix.concat([1, 0, 0, 0, 0]); // red
matrix = matrix.concat([0, 1, 0, 0, 0]); // green
matrix = matrix.concat([0, 0, 1, 0, 0]); // blue
matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha
上面是matrix的初始状态。
下面我分先来分析一下其初始状态。
red通道的值:(1,0,0,0,0)表示,R通道的乘数是1(完全保留),别的道道的的乘数是0,(不加入别的通道的颜色),色彩偏移量off是0;
。。。
别的通道依次类推。
下面来做一些效果,增加对colorMatrixFilter的认识;
1、调整亮度:
亮度(N取值为-255到255)
1,0,0,0,N
0,1,0,0,N
0,0,1,0,N
0,0,0,1,0
我们只需要设置一下RGB的色彩偏移就能调节其亮度,是不是很简单呢。
2、颜色反向
-1,0,0,0,255
0,-1,0,0,255
0,0,-1,0,255
0,0,0,1,0
先解释一下颜色反向:就是把0变为255,255变为0,1变为254,254变为1.....
因此,我们只需把RGB通道的原通道乘数设为-1,然后再把色彩偏移量设为255就行了。
3、图像去色:
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
1)、首先了解一下去色原理:只要把RGB三通道的色彩信息设置成一样;即:R=G=B,那么图像就变成了灰色,并且,为了保证图像亮度不变,同一个通道中的R+G+B=1:如:0.3086+0.6094+0.0820=1;
2)、三个数字的由来:0.3086, 0.6094, 0.0820;
按理说应该把RGB平分,都是0.3333333。三个数字应该是根据色彩光波频率及色彩心理学计算出来的(本人是这么认为,当然也查询了一些资料,目前尚未找到准确答案。
在作用于人眼的光线中,彩色光要明显强于无色光。对一个图像按RGB平分理论给图像去色的话,人眼就会明显感觉到图像变暗了(当然可能有心理上的原因,也有光波的科学依据)另外,在彩色图像中能识别的一下细节也可能会丢失。我假想:可能绿色的一些东西会丢失。
下面是我从PS中对RGB都为255的明度对比图:
0.3086*(1-N) + N, 0.6094*(1-N) , 0.0820*(1-N) , 0, 0,
0.3086*(1-N) , 0.6094*(1-N) + N, 0.0820*(1-N) , 0, 0,
0.3086*(1-N) , 0.6094*(1-N) , 0.0820*(1-N) + N 0, 0,
0 , 0 , 0 , 1, 0
5、对比度
N取值为0到10
N,0,0,0,128*(1-N)
0,N,0,0,128*(1-N)
0,0,N,0,128*(1-N)
0,0,0,1,0
分析:
所谓对比度就是让红的更红,绿的更绿……或反之。初一想,我们只需要修改RGB的乘数(要一至,不然偏色)。可仔细一琢磨,不对。如果只增加乘数,那么整个图像就会被漂白,(或反之)。好,有办法了,设置色彩偏移量,offset。具体要偏移多少呢,我们找到了一个折中的方案:128(1-N);即:一幅图像,不论很亮或很黑,但对比度为0了,最终得到的都是一幅中性灰度的图像(128),
6、阈值
所谓阈值,就是以一个色度值为基准对图像作非黑即白的处理(注意没有灰色),由于不去除了彩色属性,因此,也离不开0.3086, 0.6094, 0.0820这三组神奇的数字。
(N取值为0到255)
下面的256也可以改成255;(那样就能看到图一和图五的小黑点和小白点);
0.3086*256,0.6094*256,0.0820*256,0,-256*N
0.3086*256,0.6094*256,0.0820*256,0,-256*N
0.3086*256,0.6094*256,0.0820*256,0,-256*N
0, 0, 0, 1, 0
分析:
先不看最后面的色彩偏移:-256*N
前面我们提及过,当RGB三个通道的色彩信息一模一样时,图像就失去了色彩(去色),从0.3086*256,0.6094*256,0.0820*256,0,-256*N可以看出:图像已经去色了,并且,(*256)亮度已经翻了256倍(当然也可以是255);我们知道,RGB的有效值是0-255,即:0,1,2……255,把这些值乘以255以后会出现什么情况呢?但是除了0之外,别的全都大于或等于255了,所以此时的图像除了剩有几个黑点外,其它的全都变成白色了如图一(N=0);那么现在我们再作色彩偏移处理:把RGB都减去255;上次值为255(白色)的现在又变成0(黑色了)超过255的仍然是白色,我们不断的反复减255,图2,图3,图4,图5,分别是N=64,N=128,n=192,n=255时的图像:
7、色彩旋转
所谓色彩旋转就是让某一个通道的色彩信息让另一个通道去显示;比如,R显示G的信息,G显示B的信息,B显示R的信息,也可以只拿出一部份信息让给别的通道去显示,至于参数的瓜分可以平分。不必太讲究,但是,始终要坚持的一个原则就是每一个通道中的RGB信息量之和一定要为1,不然将会生偏色,如果您要制作偏色效果又另当别论;请偿试下面的参数:
0,1,0,0,0
0,0,1,0,0
1,0,0,0,0
0,0,0,1,0
//---------------
0,0,1,0,0
1,0,0,0,0
0,1,0,0,0
0,0,0,1,0
8、只显示某个通道;
1,0,0,0,0
0,0,0,0,0
0,0,0,0,0
0,0,0,1,0
//上面是只显示红色通道。依次类推。
下载附件:官方调试色盘
相关推荐
在ActionScript 3 (AS3)中,颜色矩阵滤镜(ColorMatrixFilter)是一种强大的工具,用于对显示对象上的像素进行复杂色彩变换。这个滤镜允许开发者通过调整一个5x4的颜色矩阵来改变图像的色彩、亮度、对比度、饱和度等...
在本文中,我们将深入探讨如何在编程环境中使用`ColorMatrixFilter`,这是一个广泛应用于图形处理和图像滤镜的工具。`ColorMatrixFilter`通常在ActionScript 3(AS3)和Flex中使用,允许开发者通过调整颜色矩阵来...
这个滤镜允许我们通过一个5x4的矩阵来改变图像的颜色、亮度、对比度、饱和度等属性。本文将深入探讨如何利用ColorMatrixFilter调整参数并应用于实际项目。 首先,ColorMatrixFilter的矩阵由20个浮点数组成,它们是...
在压缩包中的“react-native-color-matrix-image-filters-master”项目,我们可以看到这是一个React Native库,它为开发者提供了一种跨平台的方式来应用颜色矩阵滤镜。React Native是一个流行的JavaScript框架,允许...
5. **ColorMatrixFilter(颜色矩阵滤镜)** 这是一个强大的滤镜,允许开发者通过改变像素的颜色值来实现复杂的颜色转换。例如,你可以使用它来调整亮度、对比度、饱和度,甚至进行色彩平衡调整。 6. **...
颜色矩阵滤镜(ColorMatrixFilter)是Android提供的一种常用滤镜,它通过一个5x4的浮点数矩阵来改变图像的颜色。这个矩阵可以用来调整图像的亮度、饱和度、色调、对比度等属性,甚至可以实现色彩转换。例如,我们...
这种滤镜通过修改像素的颜色矩阵来改变图像的色彩。颜色矩阵是一个5x5的浮点数组,其中每个元素对应于颜色通道的调整值。默认情况下,这个矩阵是单位矩阵,意味着它不会改变图像的颜色。但是,通过改变矩阵中的值,...
下面是一段简单的AS3代码,演示了如何使用`ColorMatrixFilter`类实现颜色矩阵的变换: ```as import flash.filters.ColorMatrixFilter; // 创建颜色矩阵 var colorMat:Array = [1, 0, 0, 0, 100, 0, 1, 0, 0, 0, ...
2. **ColorMatrixFilter**:颜色矩阵滤镜,允许你通过自定义4x5颜色矩阵来精确调整图像的颜色和亮度。 3. **DropShadowFilter**:阴影滤镜,可以在对象后面添加一个或多个阴影,控制阴影的颜色、模糊度、角度和距离...
2. **ColorMatrixFilter**:这个滤镜允许你对图像的颜色进行精细控制,可以通过调整4x5的颜色矩阵来改变亮度、对比度、饱和度等。例如,增加图像的饱和度: ```actionscript var colorMatrix:ColorMatrixFilter = ...
默认情况下,`ColorMatrixFilter`对象会应用一个全灰度的矩阵,将所有颜色转换为灰度。 2. **应用滤镜到DisplayObject**: 假设我们有一个名为`myDisplayObject`的DisplayObject实例,我们可以这样做: ```...
1. **颜色调整滤镜**:包括ColorMatrixFilter,允许你通过调整RGBA矩阵来改变图像颜色。这对于色调调整、饱和度、亮度和对比度控制非常有用。 2. **模糊滤镜**:如BlurFilter和FastBlurFilter,可以为元素添加模糊...
同时,它也常与其它滤镜结合使用,如颜色矩阵滤镜(ColorMatrixFilter),以实现更复杂的图像处理。 在游戏开发中,模糊滤镜可以用来创建粒子系统中的雾化效果,或者在角色移动时模拟运动模糊,提升游戏的视觉体验...
- **颜色矩阵滤镜**:更高级的透明效果可以通过颜色矩阵滤镜(ColorMatrixFilter)实现,可以对整个显示对象应用复杂的透明和颜色变化。 2. **图形层的透明设置** - **图层透明度**:在Flash的时间轴上,可以直接...
4. **滤镜与特效**:Android提供了多种滤镜特效,如ColorMatrixFilter可以调整色彩矩阵,实现色调、饱和度和亮度的改变;BlurFilter可以实现模糊效果;而ColorFilter则可用于实现颜色转换。 5. **图像处理库**:...
* ColorMatrixFilter:是一个颜色矩阵滤镜,用于对显示对象进行颜色矩阵变换。 * ConvolutionFilter:是一个卷积滤镜,用于对显示对象进行卷积运算。 V. Error 类 AS3 显示对象结构图中还定义了一些错误类,例如:...
- **ColorMatrixFilter**:应用色彩矩阵滤镜,实现色调、饱和度和亮度的变化。 6. **时间线和事件处理**: 使用`enterFrame`事件监听器,可以在每一帧中更新图片状态,实现连续的过渡动画。当一个过渡完成时,...
在AS3(ActionScript 3)中,图片处理是一个重要的领域,主要涉及到图像的色彩调整、滤镜应用以及布局管理等方面。在这个主题中,我们将深入探讨如何使用AS3来实现图片的基本操作,如亮度调整、灰度转换、色调变化...
19.8色彩矩阵滤镜ColorMatrixFilter 406 19.9矩阵盘绕滤镜ConvolutionFilter 408 19.10置换滤镜DisplacementMapFilter 410 19.11滤镜切换的相册示例 412 19.12小结 415 第6篇ActionScript3.0多媒体编程 第20章音频...
AS3.0中的`ColorMatrixFilter`滤镜可以用来改变舞台上的颜色矩阵,从而实现雾的视觉效果。 创建雾的步骤可能包括以下几点: 1. **设置舞台背景**:选择一种能体现雾天氛围的颜色作为背景,例如淡灰色或淡蓝色,并...