您知道有关在 as3/flash 中比较图像的任何来源或信息吗?
我想比较两张图像并检查图像是否相同。
检查这个例子:http: //imageshack.us/photo/my-images/825/imagecompare.jpg/
有什么线索吗?先感谢您!
您知道有关在 as3/flash 中比较图像的任何来源或信息吗?
我想比较两张图像并检查图像是否相同。
检查这个例子:http: //imageshack.us/photo/my-images/825/imagecompare.jpg/
有什么线索吗?先感谢您!
除了重复的答案,
我相信你也可以使用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();
其中:info是一个文本框,mc1和mc2是舞台上的两个影片剪辑。
我认为您可以通过比较单个值(即像素有多少不同)而不是布尔值是像素相似匹配来使其变得更好。
结果:(将包括圆形图像周围的空白区域)
如果像素值相同,则使用BitmapData.compare()
将返回。0
trace(bmd1.compare(bmd2)); // 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(...)
}