Flash中的颜色矩阵(ColorMatrixFilter)
[摘自]?http://www.webjx.com 颜色矩阵 在flash中可以用矩阵方便的操作颜色。在flash8以前的版本,操作颜色的唯一途径就是通过修改颜色对象中红,绿,蓝三个通道的值,在Flash8,"颜色矩阵滤镜" ColorMatrixFilter (flash.filters.ColorMatrixFilter) 在颗粒等级上提供给你更好的控制方法。"颜色矩阵滤镜"为 4行5列的多维矩阵(20个元素的数组)。图 4 是 与"颜色矩阵滤镜"等同的矩阵。
图4.?与"颜色矩阵滤镜"等同的矩阵 红,绿,蓝通道的值由如下所示计算方法所决定: CODE: redResult = a[0] * srcR + a[1] * srcG + a[2] * srcB + a[3] * srcA + a[4] 可以看出,第一行的值决定了红色值,第二行决定绿色,第三行蓝色,第四行是透明(Alpha)通道值。同样可以看出首四栏值是与红,绿,蓝,alpha通道值的乘积,而第五栏的值分别是和(偏移量)。注意每行的源值和结果值都是在0到255的区间内。因此即使各个通道的值小于0或大于255都会被强制到该区间内。我来举些例子说明它的原理。 果你想在红色通道加100(偏移量),将a[4]设置为100,如(图5) 。
图5.?红色值增加100 如果想使绿色通道加倍,将a[6]设为2,如(图6)
图6.?绿色加倍 如果你要使结果图像中的蓝色与原图的红色数量相等,将a[10]设为1, a[12]设为0 ,如(图7)
图7.?红色决定蓝色值 改变图像的
图8.?增加亮度 你也可以通过将每个颜色通道与一个值相乘按比例的改变亮度,大于1的增加亮度小于1减小亮度。
图9.灰度图矩阵 由于不同颜色通道的相对屏幕发光度,但是 确实有特殊的提供更加真实的灰度图的"亮度系数"值 。例如在PS里创建一个纯绿色块然后把它放在一个纯蓝色块 ,然后将图像灰度化,你会看到原来绿色的地方的灰色会比原来蓝色的区域要亮。 在Flash里使用这些矩阵,创建一个"颜色矩阵滤镜"的实例然后将它加入到一个影片剪辑(MovieClip)实例上。下面是一个使绿色加倍的例子: CODE: "颜色矩阵滤镜"与一个已知的矩阵使用,你可以完成除了亮度和灰度之外复杂的颜色调整。调整对比度,饱和度和色相在 Flash 8种都成为了肯能。虽然在这里讨论这些话题与这篇文章有些远,但是足以说 Flash 8提供了一个以前任何版本都不能做到的颜色操作途径。 下面的flash可以看到在操作图像时结果矩阵是怎么改变的!? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c -cli – C/C++LI:Console :: WriteLine()或cout?
- 试图搞懂MDK程序下载到Flash(一)--Nand Flash启动流程,加载
- c# – 使用实体框架并使用orderby和skip/take的规范模式
- Error parsing XML: not well-formed (invalid token) 报错
- ultraedit使用正则
- Flash Builder 4 安装后Eclipse变成中文了怎么解决
- vb.net 教程 3-4 窗体编程 公共控件5 LinkLabel
- 在对xml进行操作完成之后一定要记得保存,否则等于没操作
- 如何从具有多对多关系的C#Web API Visual Studio 2017 RTM提
- org.xml.sax.SAXParseException; lineNumber: 23; columnNu