5

as3/flash 内で画像を比較することに関するソースまたは情報を知っていますか?

2つの画像を比較して、画像が同じかどうかを確認したい。

この例を確認してください: http://imageshack.us/photo/my-images/825/imagecompare.jpg/

手がかりはありますか?前もって感謝します!

4

3 に答える 3

3

を使用すると、ピクセル値が同一である場合BitmapData.compare()に返されます。0

trace(bmd1.compare(bmd2)); // 0
于 2012-11-15T21:32:26.663 に答える
3

重複した回答に加えて、

BitmapData.compare()も使用できると思います

リンクから取った例として、次の 2 つの BitmapData オブジェクトを考えてみましょう。

 var bmd1:BitmapData = new BitmapData(50, 50, true, 0xFFFF8800);
 var bmd2:BitmapData = new BitmapData(50, 50, true, 0xCCCC6600);
 var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData;
 trace ("0x" + diffBmpData.getPixel(0,0).toString(16); // 0x332200

コード例 (パーセンテージ差) :

結果がどれほど正しいかはわかりませんが、これは私がパーセンテージで醸造したものです:

var bmd1:BitmapData = new BitmapData(225, 225);
bmd1.draw(mc1);
var bmd2:BitmapData = new BitmapData(225, 225);
bmd2.draw(mc2);

var diffBmpData:BitmapData = bmd1.compare(bmd2) as BitmapData;

var diff:int = 0;
var total:int = 225 * 225;

for(var i=0; i<225; i++)
    for(var j=0; j<225; j++)
        diff += (diffBmpData.getPixel(i,j) != 0)? 1 : 0; 

info.text = Math.round((diff / total * 100)).toString();

ここで、infoは TextBox、mc1mc2はステージ上の 2 つのムービークリップです。

ブール値の is-pixel-similar一致ではなく、個々の値 (つまり、ピクセルがどれだけ異なるか) を比較することで改善できると思います。


結果:(丸い画像の周りの空白が含まれます)

ここに画像の説明を入力

于 2012-11-15T17:24:58.673 に答える
0

loxxy & xLite の回答に加えて、画像ファイルから BitmapData を取得する方法を知る必要がある場合:

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);

loader.load( new URLRequest ( "http://www.fake.url.path/image.jpg" ) );

function onLoaded(e:Event):void {
    var bmp:Bitmap = loader.content as Bitmap;
    var bitmapData:BitmapData = bmp.data; 
    //bitmapData.Compare(...)
}

Loader.loadBytes(byteArray) によるイメージのロードも参照してください。

于 2012-11-15T22:30:24.777 に答える