Flex图像编程技巧 3:图像滤镜


 

Flex图像编程技巧 3:图像滤镜


Andrew Trice


这是Andrew图像编程系列的第三篇,当然这些技巧不仅适用于FLEX,他们同样也适用于FLASH,本篇主要关注的是如何在图像处理的过程中恰当的运用滤镜


图像滤镜使得编程人员能够对任意的显示对象进行像素级别的操作及变换,因此任何能够在FLEX中显示的对象都可以运用滤镜来进行诸如:模糊,发光,阴影甚至是颜色处理,锐化,边界检测。听起来似乎很玄,但是其实上手十分容易,在这篇帖子中我将从FLEX的几个简单的特性入手,如:模糊,阴影,发光以及颜色变换等等。也许在后续的一些贴子中我会展示一些更加高深的技术如:置换滤镜,羽化等等


All of these examples begin with the same gear image that we've used in the previous two examples:这里用到的例子还是我们在前面的例子中使用的齿轮





 


可以使用AS3或者是MXML标签来应用滤镜,这里的例子主要是透过AS3代码来交代如何使用滤镜


首先,让我们来看一下模糊滤镜。这个滤镜非常简单,首先你要决定图像在X,Y两个方向的模糊度,当然还有量,量属性决定了在图像进行模糊渲染的时候所要进行的迭代计算次数,因此越高的质量,迭代的次数就越多,占用的CPU资源当然也就越大。当然你不需要设置所有的属性,因为这些属性都有缺省值,这里所有的例子都展示了如何设置滤镜的参数,以及对应的效果。


var filter : BlurFilter = new BlurFilter();

filter.blurX = blurX.value;
filter.blurY = blurY.value;
filter.quality = quality.value;
image.filters = [ filter ]

 


另一个简单的以及我非常喜爱的滤镜就是阴影滤镜,使用这个类你可以为任何东西添加阴影。简单易用,功能强大。


var filter : DropShadowFilter = new DropShadowFilter();

filter.blurX = blurX.value;
filter.blurY = blurY.value;
filter.quality = quality.value;
filter.alpha = _alpha.value;
filter.angle = angle.value;
filter.color = color.selectedColor;
filter.distance = distance.value;
filter.inner = inner.selected;
image.filters = [ filter ];

 


这儿还有一些拉伸和发光的例子,代码和上面的基本一致,我就不贴出来了,你只需要创建一个滤镜的实例,然后将对象的滤镜数组添加相应的滤镜



>


 


使用ColorMatrixFilter,你同样也可以加强或者改变你图像的颜色(也包括其他的所有显示对象),本例中仅适用此技术来改变现实对象的像素的颜色,当然你也可以使用该技术来添加或者去除显示颜色,增加艾对比度。这是图像处理的非常强大的工具

var filter : ColorMatrixFilter = new ColorMatrixFilter();

var matrix:Array = new Array();
matrix = matrix.concat([r.value, 0, 0, 0, 0]); // red
matrix = matrix.concat([0, g.value, 0, 0, 0]); // green
matrix = matrix.concat([0, 0, b.value, 0, 0]); // blue
matrix = matrix.concat([0, 0, 0, _alpha.value, 0]); // alpha
filter.matrix = matrix;
image.filters = [ filter ];



 


当你把这些滤镜组合起来使用的时候,你就能够体会到滤镜的强大之处了,正如上面所提到的滤镜可以作为滤镜数组参数的一部分应用到一定的对象,可以使用的滤镜的数量是没有明确的限制的,当然你要记住,你使用的滤镜越多,你耗费的CPU时间就越多,下面是如何将这些滤镜组合起来的一个例子



 

var b : BlurFilter = new BlurFilter();

var d : DropShadowFilter = new DropShadowFilter( 15 );

var g : GlowFilter = new GlowFilter( 0xFF0000, 1, 5, 5, 2, 1, true );

image.filters = [ b, d, g ]

 


... and here is the output:


 


你可以从下面的网址获得前面的所有教程


http://www.cynergysystems.com/blogs/blogs/andrew.trice/filters/filters.html


可以从下面的网址获得教程的所有源代码


http://www.cynergysystems.com/blogs/blogs/andrew.trice/filters/srcview/


还有这里:


http://www.cynergysystems.com/blogs/blogs/andrew.trice/filters/srcview/filters.zip


正如我前面提到的,在这篇帖子中,我并不会覆盖所有的滤镜,但是我还是给出不少的使用滤镜能够达到的效果


Bending The Rules:弯曲的窗口


使用置换滤镜的效果我们能够轻易的完成弯曲的窗口的效果


http://www.cynergysystems.com/blogs/page/andrewtrice?entry=bending_the_rules


WebCam Displacement:


详细的讲解可以从下面的连接获得


http://www.cynergysystems.com/blogs/page/andrewtrice?entry=displacementmapfilter_webcam_tons_o_fun


当然要了解滤镜的详细工作原理最好的资源永远是: Adobe Flex language reference.


WebCam Displacement:



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Flex 布局实现一个容器的宽高比为 4:3,可以按照以下步骤操作: 首先,创建一个容器元素,并将其设置为 Flex 布局: ```css .container { display: flex; } ``` 接下来,为容器元素添加一个伪元素作为占位符,用于实现宽高比。设置伪元素的 `padding-bottom` 属性为 `75%`(即 3/4): ```css .container::before { content: ""; padding-bottom: 75%; flex-shrink: 0; } ``` 这里使用了伪元素的 padding-bottom 属性来实现高度的比例关系。根据 4:3 的比例,设置为 75% 可以保持宽高比为 4:3。 最后,将容器内的内容设置为绝对定位,并设置 `top`、`right`、`bottom`、`left` 四个属性为 0,使其充满整个容器: ```css .container > * { position: absolute; top: 0; right: 0; bottom: 0; left: 0; } ``` 这样,容器的宽高比就被设置为了 4:3。 以下是完整的示例代码: ```html <!DOCTYPE html> <html> <head> <style> .container { display: flex; position: relative; } .container::before { content: ""; padding-bottom: 75%; flex-shrink: 0; } .container > * { position: absolute; top: 0; right: 0; bottom: 0; left: 0; } /* 示例样式,可根据需要自定义样式 */ .container { width: 400px; height: 300px; background-color: lightgray; } .content { background-color: coral; } </style> </head> <body> <div class="container"> <div class="content">容器内容</div> </div> </body> </html> ``` 在上面的示例中,容器的宽度为 400px,高度为 300px,背景颜色为浅灰色。容器内的内容部分使用了 `.content` 类选择器,背景颜色为珊瑚色。 你可以根据需要修改容器的宽高和样式,以达到满足你的需求的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值