比较ActionScript 3中的两个位图

时间:2012-09-01 15:16:31

标签: actionscript-3 flash

我有两个相似的BitmapData,我想比较它们并得到它们相似的百分比。 (我想我应该使用BitmapData的compare()和threshold()方法,但不知道如何)(或者只是使用getPixel并比较每像素的像素,但我不知道它是否对性能有益)

1 个答案:

答案 0 :(得分:5)

这是一个使用compare和getVector的简单方法,假设两个位图数据对象的宽度和高度相同:

var percentDifference:Number = getBitmapDifference(bitmapData1, bitmapData2);

private function getBitmapDifference(bitmapData1:BitmapData, bitmapData2:BitmapData):Number 
{
    var bmpDataDif:BitmapData = bitmapData1.compare(bitmapData2) as BitmapData;
    if(!bmpDataDif)
        return 0;
    var differentPixelCount:int = 0;

    var pixelVector:Vector.<uint> =  bmpDataDif.getVector(bmpDataDif.rect);
    var pixelCount:int = pixelVector.length;

    for (var i:int = 0; i < pixelCount; i++) 
    {
        if (pixelVector[i] != 0)
            differentPixelCount ++;
    }

    return (differentPixelCount / pixelCount)*100;
}