您是否知道有关在as3 / flash中比较图像的任何来源或信息?
我想比较两个图像并检查图像是否相同。
检查此示例: http://imageshack.us/photo/my-images/825/imagecompare.jpg/
任何线索?提前谢谢!
答案 0 :(得分:3)
除了重复的答案,
我相信你也可以使用BitmapData.compare()
从链接中获取的示例,请考虑以下两个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();
其中:信息是一个TextBox, mc1 &amp; mc2 是舞台上的两个动画片段。
我认为你可以通过比较单个值(即一个像素有多少不同)而不是布尔像素相似匹配来改善它。
结果:(包含圆形图像周围的空白区域)
答案 1 :(得分:3)
如果像素值相同,则使用BitmapData.compare()
将返回0
。
trace(bmd1.compare(bmd2)); // 0
答案 2 :(得分:0)
除了loxxy&amp; 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(...)
}