比较图像
本文关键字:图像 比较 | 更新日期: 2023-09-27 17:59:31
我在两个不同的对象中有完全相同的图像。它们是bmp,当我将它们与.Equals
进行比较时,它返回false。
这有原因吗?如果有,应该如何比较图像?
如果它们是两个不同的Image
对象,分别加载,它们将具有不同的引用。
Image
从Object
继承.Equals
,而不是覆盖它(请参阅MSDN上的Image
)。
由于.Equals
执行引用相等,因此如果引用指向不同的Image
对象,则返回false。
要查看图像是否相同,必须逐像素/逐字节进行比较。
Equals
:
确定指定的Object是否等于当前Object。
由于这两个实例是不同的object
实例,因此false
是正确的结果。
为了真正比较图像,您需要逐个检查AFAIK。
.Equals()
检查它们是否是对同一对象的引用。如果你想比较它们,你必须手动进行,比较所有像素的大小或颜色。
默认情况下。Equals(object)compres引用相等。这意味着,即使你两次加载同一个图像,它们是不同的实例这一简单事实意味着它们不会相等。
Equals方法,正如您所称,它是比较引用(也称为指针)的地址,并且由于您的对象可能被加载到两个不同的内存位置,因此结果为false。
您应该编写自己的方法来比较更高级别的结构,例如,您首先比较高度和宽度,如果高度和宽度相同,然后比较像素,Image类可能无论如何都会对您有所帮助,但对象类中提供了Equals,因此对您没有帮助。
。Equals通常比较对象实例。您需要比较对象"内容"。
查看此帖子:http://www.dreamincode.net/code/snippet2859.htm
或者这样:http://www.c-sharpcorner.com/UploadFile/prathore/ImageComparison01022009050404AM/ImageComparison.aspx