ActionScript编程 使用阈值
作用:
根据位图中一些像素的颜值进行运算,返回新的颜,并将其应用到位图中。
说明:
一个领域或一个系统的界限称为阈,其数值称为阈值。在Photoshop等图像处理软件中,通常通过指定某个阶作为阈值来对位图中的像素进行测试,所有亮度超过阈值的被转换为白,反之则被转换为黑。
在ActionScript3.0中,支持使用位图数据(BitmapData)类的阈值(threshold()方法)对Flash中的位图进行处理,实现彩的过滤。然而,ActionScript3.0的阈值逻辑关系比Photoshop等图像处理软件更复杂一些。其不仅用于简单的判断,还可以根据阈值和颜进行复杂比较运算,通过结果返回新的颜值,方法如下所示。
BitmapData.threshold(SourceBitmapData,SourceRect.DestPoint,Operation,Threshold,Color,Mask,CopySource)
在上面的代码中,各关键词的含义如下所示。
● BitmapData 位图数据对象的实例名称
● SourceBitmapData 需要进行比较的位图数据对象的实例名称
● SourceRect 需要计算阈值的矩形区域
● DestPoint 需要计算阈值的矩形区域坐标点
● Operation 由比较运算符构成的字符串型(String)数据
● Threshold 阈值
● Color 与阈值比较通过后转换的颜值
● Mask 掩码,可隔离特定的颜通道
● CopySource 判断与阈值比较未通过时是否复制到修改的位图中。
其中,SourceBitmapData参数是另一个位图数据对象的实例名称。阈值的方法将会把SourceBitmapData位图数据与BitmapData位图数据进行比较。如比较失败,则BitmapData位图数据中相应的像素就会被设置成指定的颜,而如比较成功,则可以设置不对BitmapData位图数据进行修改。
SourceRect参数的数据类型为矩形区域(Rectangle类的实例),定义进行比较的区域大小。DestPoint参数则定义SourceRect矩形的坐标点。
Operation参数共可以包括6种比较运算符,即小于“<”、小于等于“<=”、大于“>”、大于等于“>=”、等于“==”以及不等于“!=”等符号的字符串。
Threshold参数就是进行比较的参照,即阈值。该参照颜为8位16进制的非负整型(uint)数字。mask掩码的作用是隔离比较阈值的特定颜通道。例如,在进行阈值比较时,ActionScript会认为红(0xffff0000)会比绿(0xff00ff00)和蓝(0xff0000ff)更大。因此,在进行比较时,需要将某些通道隔离开。隔离的通道以0表示,例如,比较红通道,需要隔离蓝和绿,则掩码为0x00ff0000。
阈值(threshold())方法是位图数据(BitmapData)类中最复杂的方法。了解阈值,有助于帮助用户对复杂的图像进行处理。
示例:
使用阈值可以方便地获取位图中的像素,并对其进行比较运算。例如,获取实例名称为bitmapdata的位图中,深大于红的像素,将其复制到新的位图中,如下所示。
var sourceBitmapData:bitmapdata = new bitmapdata(250,250);
//实例化源位图数据对象
var sourceBitmap:Bitmap = new Bitmap(sourceBitmapData);
//实例化源位图对象
sourceBitmap.x=15;实例化类和实例化对象
sourceBitmap.y=15;
stage.addChild(sourceBitmap);
//定义源位图的坐标并将其显示到舞台中
var targetBitmapData:BitmapData = new BitmapData(250, 250, true, 0xFFCCCCCC);
//实例化目标位图数据的对象
var point:Point = new Point(0, 0);
//实例化复制像素的起始坐标点
var rect:Rectangle = new Rectangle(0, 0, 250, 250);
//实例化复制像素的矩形范围
var threshold:uint = 0x00008800;
//实例化阈值
var color:uint = 0xFFFFFFFF;
//实例化运算结束后非阈值区域的颜
var maskColor:uint = 0x0000FF00;
//实例化阈值运算的掩码
targetBitmapData.threshold(sourceBitmapData, rect, point, ">", threshold, color, maskColor, true);
//对目标位图数据进行阈值运算
var targetBitmap:Bitmap = new Bitmap(targetBitmapData);
//实例化目标位图对象
targetBitmap.x=285;
targetBitmap.y=15;
stage.addChild(targetBitmap);
//定义目标位图对象的坐标,并将其显示到舞台中
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论