[AS3]as3之ConvolutionFilter滤镜的理解与代码示例
滤镜这个东西貌似很复杂,一时半会搞不明白,先记下搞明白的部分。ConvolutionFilter 是一个矩阵盘绕滤镜,这个滤镜其实不是AS3的新东西,flash8的时候就有了
滤镜这个东西貌似很复杂,一时半会搞不明白,先记下搞明白的部分。ConvolutionFilter 是一个矩阵盘绕滤镜。(为什么叫盘绕我也不知道,估计就是周边像素混合运算的意思。)这个滤镜其实不是AS3的新东西,flash8的时候就有了。只不过,AS3里功能更强大点。(不过强大的功能我还不会),它的效果类似photoshop里的自定义滤镜。所以要做不同效果的话在photoshop里调好效果,然后把数值抄过来似乎是比较高效的方法。
下面是代码:
- //pic是库里的一张图片,不过这里有个没明白的事情:
- //把图片设为“类”之后,构建这个p1的时候提示需要两个参数,而这两个参数的值我不知道有什么用。
- var p1:pic=new pic(0,0);
- //创建一个BitmapData对象,一会用他测试滤镜。(极酷播放器)
- //也不是一定要BitmapData对象才可以用滤镜,对于所有显示对象都可以使用filters属性来应用滤镜。
- var bmd:BitmapData=new BitmapData(500, 375);
- //将p1绘制到bmdbmd里
- bmd.draw(p1);
- //矩阵的两个维度
- var matrixX:Number = 3;
- var matrixY:Number = 3;
- //转换矩阵,数组长度必须是上面的matrixX和matrixY的乘积,
- //这里代表就是个3×3的九宫格。这里的值产生的效果是“浮雕”
- var matrix:Array = new Array(-2,-1,0,-1,1,1,0,1,2);
- //总计算值的除数,用来调平色彩,最大的用处是控制亮度。等同于photoshop自定义滤镜里的那个缩放。
- var divisor:Number=1;
- //总计算值的偏差,等同于photoshop自定义滤镜里的那个位移。
- var bias:Number=0;
- //创建一个ConvolutionFilter滤镜对象
- var filter:BitmapFilter = new ConvolutionFilter(matrixX, matrixY, matrix, divisor,bias);
- //应用滤镜,参数依次是:对象、对象区域、左上角坐标、滤镜。
- bmd.applyFilter(bmd,bmd.rect,new Point(0,0),filter);
- //BitmapData不是一个显示对象,所以还是需要Bitmap来显示一下。
- var bm:Bitmap = new Bitmap(bmd);
- addChild(bm);
再记几种其他效果
模糊:
matrix=[1,1,1,1,1,1,1,1,1];
divisor=9;
锐化:
matrix=[0,-1,0,-1,5,-1,0,-1,0];
divisor=1;
查找边缘:
matrix=[0,1,0,1,-4,1,0,1,0];
divisor=0.5(极酷播放器www.89525.net)
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...