`

Flash中的颜色矩阵(ColorMatrixFilter)

阅读更多
颜色矩阵

在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]
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]

可以看出,第一行的值决定了红色值,第二行决定绿色,第三行蓝色,第四行是透明(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) 是一个增加亮度的例子。




图8. 增加亮度

你也可以通过将每个颜色通道与一个值相乘按比例的改变亮度,大于1的增加亮度小于1减小亮度。
按照原理,将图像转换为灰度图,你需要将每个通道的部分设为等值。因为有三个通道,你可以将每个通道乘以0.33并将它们相加得到结果值。如(图9)




图9.灰度图矩阵

由于不同颜色通道的相对屏幕发光度,但是 确实有特殊的提供更加真实的灰度图的"亮度系数"值 。例如在PS里创建一个纯绿色块然后把它放在一个纯蓝色块 ,然后将图像灰度化,你会看到原来绿色的地方的灰色会比原来蓝色的区域要亮。

在Flash里使用这些矩阵,创建一个"颜色矩阵滤镜"的实例然后将它加入到一个影片剪辑(MovieClip)实例上。下面是一个使绿色加倍的例子:

CODE:
import flash.filters.ColorMatrixFilter;
var mat:Array = [ 1,0,0,0,0,
       0,2,0,0,0,
       0,0,1,0,0,
       0,0,0,1,0 ];
var colorMat:ColorMatrixFilter = new ColorMatrixFilter(mat);
clip.filters = [colorMat];

"颜色矩阵滤镜"与一个已知的矩阵使用,你可以完成除了亮度和灰度之外复杂的颜色调整。调整对比度,饱和度和色相在 Flash 8种都成为了肯能。虽然在这里讨论这些话题与这篇文章有些远,但是足以说 Flash 8提供了一个以前任何版本都不能做到的颜色操作途径。

下面的flash可以看到在操作图像时结果矩阵是怎么改变的!
Flash:
http://www.adobe.com/devnet/flash/articles/matrix_transformations/ColorMatrixDemo.swf
  • 大小: 2.6 KB
  • 大小: 2.6 KB
  • 大小: 2.6 KB
  • 大小: 2.5 KB
  • 大小: 2.7 KB
  • 大小: 2.8 KB
分享到:
评论

相关推荐

    as3的颜色矩阵滤镜ColorMatrixFilter的使用

    在ActionScript 3 (AS3)中,颜色矩阵滤镜(ColorMatrixFilter)是一种强大的工具,用于对显示对象上的像素进行复杂色彩变换。这个滤镜允许开发者通过调整一个5x4的颜色矩阵来改变图像的色彩、亮度、对比度、饱和度等...

    使用filters中的ColorMatrixFilter

    `ColorMatrixFilter`通常在ActionScript 3(AS3)和Flex中使用,允许开发者通过调整颜色矩阵来改变舞台上显示对象的颜色、亮度、对比度、饱和度等属性。在给定的示例中,我们有一个名为`ColorMatrixFilterSample....

    AS3][Matrix][利用颜色矩阵进行颜色变换

    ### AS3中利用颜色矩阵进行颜色变换 在Adobe Flash Professional(现称为Animate)和ActionScript 3.0(简称AS3)中,颜色变换是一种常见的图像处理技术,主要用于调整图像的颜色、亮度、对比度等视觉效果。颜色...

    flash as 3利用滤镜变换位图颜色

    总之,`ColorMatrixFilter`是AS3中一个强大的工具,它通过调整颜色矩阵来实现位图的颜色变换。通过理解和应用这个滤镜,开发者可以创造出各种各样的颜色效果,提升作品的艺术性和交互性。通过研究`...

    flash image处理类库

    Flash的Filter类提供了一系列图像特效,如模糊、渐变发光、颜色矩阵等。可以将这些滤镜应用于BitmapData对象,然后更新显示对象,以实现各种视觉效果。 5. 图像裁剪与缩放: BitmapData的`draw()`方法可以用于绘制...

    flash as3.0模拟排雾

    AS3.0中的`ColorMatrixFilter`滤镜可以用来改变舞台上的颜色矩阵,从而实现雾的视觉效果。 创建雾的步骤可能包括以下几点: 1. **设置舞台背景**:选择一种能体现雾天氛围的颜色作为背景,例如淡灰色或淡蓝色,并...

    as3中设置图形的颜色

    通过调整颜色矩阵,你可以实现色彩调整、灰度转换、饱和度控制等多种效果。 总结起来,AS3中设置图形颜色的方式多样,可以根据需求选择合适的工具。对于已生成的图形,可以通过重新绘制或使用`BitmapData`的`...

    flash透明效果

    - **颜色矩阵滤镜**:更高级的透明效果可以通过颜色矩阵滤镜(ColorMatrixFilter)实现,可以对整个显示对象应用复杂的透明和颜色变化。 2. **图形层的透明设置** - **图层透明度**:在Flash的时间轴上,可以直接...

    flex中给图片或任意组件着色的方法

    例如,我们可以创建一个颜色矩阵来实现饱和度、亮度、对比度的调整,或者直接进行色彩转换。以下是一个简单的例子: ```actionscript var matrix:Array = [1, 0, 0, 0, redValue, 0, 1, 0, 0, greenValue, 0, 0...

    flash模糊函数的应用

    同时,它也常与其它滤镜结合使用,如颜色矩阵滤镜(ColorMatrixFilter),以实现更复杂的图像处理。 在游戏开发中,模糊滤镜可以用来创建粒子系统中的雾化效果,或者在角色移动时模拟运动模糊,提升游戏的视觉体验...

    AS3 让一张图片变成火焰特效的代码

    我们可以使用渐变工具或者颜色矩阵滤镜来改变粒子的颜色,使其看起来像火焰。例如,粒子靠近“源头”时可能是较冷的蓝色,随着远离“源头”,颜色逐渐变为黄色和红色。 ```actionscript var colorMatrix:...

    flash as3.0 图片随机过渡效果

    - **ColorMatrixFilter**:应用色彩矩阵滤镜,实现色调、饱和度和亮度的变化。 6. **时间线和事件处理**: 使用`enterFrame`事件监听器,可以在每一帧中更新图片状态,实现连续的过渡动画。当一个过渡完成时,...

    [心得] AS3)灰化显示对象(DisplayObject)的方法 / 图片灰化

    默认情况下,`ColorMatrixFilter`对象会应用一个全灰度的矩阵,将所有颜色转换为灰度。 2. **应用滤镜到DisplayObject**: 假设我们有一个名为`myDisplayObject`的DisplayObject实例,我们可以这样做: ```...

    tx.rar_图像

    例如,可以使用ColorMatrixFilter对图像应用颜色矩阵变换,实现色彩的调整、亮度和对比度的改变,甚至创建特殊效果如灰度或负片。另一个方法是使用BitmapData的displacementMap()函数,它可以创建基于像素位置的色彩...

    AS3_显示对象结构图.pdf

    * ColorMatrixFilter:是一个颜色矩阵滤镜,用于对显示对象进行颜色矩阵变换。 * ConvolutionFilter:是一个卷积滤镜,用于对显示对象进行卷积运算。 V. Error 类 AS3 显示对象结构图中还定义了一些错误类,例如:...

    as3 Image effect源代码

    2. **ColorMatrixFilter**:这个滤镜允许你对图像的颜色进行精细控制,可以通过调整4x5的颜色矩阵来改变亮度、对比度、饱和度等。例如,增加图像的饱和度: ```actionscript var colorMatrix:ColorMatrixFilter = ...

    As3 开源图片特效类

    2. **ColorMatrixFilter**:颜色矩阵滤镜,允许你通过自定义4x5颜色矩阵来精确调整图像的颜色和亮度。 3. **DropShadowFilter**:阴影滤镜,可以在对象后面添加一个或多个阴影,控制阴影的颜色、模糊度、角度和距离...

    as3.0做特效

    在AS3.0中,通过使用ColorMatrixFilter或GradientBitmapData对象,可以实现这种效果,使图片呈现出不同的色调和氛围。 4. **显示器LED效果**: 模拟LED显示器通常需要处理像素级别的亮度和颜色控制。AS3.0提供了...

    AS3中Matrix类

    - Matrix类还可以与其他类结合使用,如ColorMatrixFilter,进行颜色变换。 - Matrix类的一些常用方法包括`createGradientBox()`和`createBitmapData()`,它们分别用于创建渐变和位图数据。 - 可以通过矩阵相乘来...

    as3.0图片切换随机效果(10种)

    利用ColorMatrixFilter,可以改变图片的色彩矩阵,创建丰富的颜色过渡。 9. **碎片效果**:图片分解成多个碎片散开,然后重组。这涉及到复杂的位图切割和动画控制,可能需要使用额外的库,如Flump或GreenSock。 10...

Global site tag (gtag.js) - Google Analytics