8.18.比较两幅位图

8.18.1. 问题
我需要比较两个位图图像,并显示他们之间的差别。
8.18.2. 解决办法
从两个图像读取位图数据,并使用compare 方法比较两个图像。把两个图像的差别设置为第3 个图像的源。
8.18.3. 讨论
BitmapData 类的compare 方法返回一个BitmapData 对象,包括两个列出的图像中所有不能匹配的像素。如果两个BitmapData 对象有相同的尺寸(宽和高),这个方法返回一个新的BitmapData 对象,包括两个源对象中不同的每一个像素:如果两个像素相同,不同的像素值是0x00000000。如果两个像素有不同的RGB 值(忽略alpha 值)不同的像素值是0xFFRRGGBB,这里的RR/GG/BB 是红色,绿色,蓝色通道之间的个体的差别值。在这种情况下, alpha 通道的差异被忽略。如果只是alpha 通道的值有差别,像素的值是0xZZFFFFFF,这里ZZ 是alpha 值得差别值。
+展开
-XML
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400"
height="800">

<mx:Script>
<![CDATA[
import mx.core.BitmapAsset;
private function compare():void {
var bmpd1:BitmapData = new BitmapData(img1.width,img1.height);
var bmpd2:BitmapData = new BitmapData(img2.width,img2.height);
bmpd1.draw(img1)
bmpd2.draw(img2);
var diff:BitmapData = bmpd2.compare(bmpd1) as BitmapData;
var bitmapAsset:BitmapAsset = new BitmapAsset(diff);
img3.source = bitmapAsset;
}

]]>
</mx:Script>
<mx:Image id="img1source="../assets/mao.jpgheight="200"
width="200"/>

<mx:Image id="img2source="../assets/bigshakey.png"
height="200width="200"/>

<mx:Button click="compare()label="compare"/>
<mx:Image id="img3"/>
</mx:VBox>

加支付宝好友偷能量挖...


评论(0)网络
阅读(80)喜欢(0)flash/flex/fcs/AIR