首页 > 网站 > WEB开发 > 正文

8.5.融合两幅图像

2024-04-27 13:52:03
字体:
来源:转载
供稿:网友
8.5.1. 问题
我需要在运行时操作和结合多张图片,并使用过滤器来改变这些图片。
8.5.2. 解决办法
把图像作为BitmapData 对象,使用BitmapData 类combine 方法把两个位图和并为一个新的图像。
8.5.3. 讨论
BitmapData 和Bitmap 类是在运行时操作图像和建立新效果的强大的工具。这两个类经常串联使用,但又有不同。BitmapData 类封装实际的数据到图像,Bitmap 类是一个能被加入到现实列表中的显示对象。BitmapData 对象的建立和写入如下:
+展开
-ActionScript
var bitmapAsset:BitmapAsset = new BitmapAsset(img1.width, img1.height);
bitmapAsset.draw(img1);

首先,设置BitmapAsset 高度和宽度,确保该对象是正确的大小,并从一个图像写入所有数据。这把图像的所有数据作为一个位图来读取,并允许你操作这些数据。在下面的例子中,用colorTransform 方法操作BitmapData 对象的颜色数据,通过merge 方法和并两个位图。

colorTransform 方法适用于把数据从ColorTransform 对象传递到BitmapData 对象。

ColorTransform 对象修改显示对象的颜色或BitmapData 相应的数据被传递到结构中:
+展开
-ActionScript
ColorTransform(redMultiplier:Number = 1.0, greenMultiplier:Number = 1.0,blueMultiplier:Number = 1.0, alphaMultiplier:Number = 1.0, redOffset:Number = 0,greenOffset:Number = 0, blueOffset:Number = 0, alphaOffset:Number = 0)

当ColorTransform 对象被应用的显示对象时,像这样每个颜色通道重新计算了新的值:
+展开
-ActionScript
New red value = (old red value * redMultiplier) + redOffset 
New green value = (old green value * greenMultiplier) + greenOffset
New blue value = (old blue value * blueMultiplier) + blueOffset
New alpha value = (old alpha value * alphaMultiplier) + alphaOffset

BitmapData 类的merge 方法见下列标记
+展开
-ActionScript
merge(sourceBitmapData:BitmapData, sourceRect:Rectangle, destPoint:Point,redMultiplier :uint, greenMultiplier:uint, blueMultiplier:uint, alphaMultiplier:uint):void
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表