比较图像

时间:2011-06-20 14:27:38

标签: c# image

我在2个不同的对象中拥有完全相同的图像。它们是bmp,当我将它们与.Equals进行比较时,它返回false。

是否有理由这样做,如果是这样,应该如何比较图像?

6 个答案:

答案 0 :(得分:6)

如果它们是两个不同的Image个对象,则单独加载它们会有不同的引用。

Image.Equals继承Object,而不是覆盖它(请参阅MSDN上的Image)。

由于.Equals确实引用了相等性,因此如果引用是针对不同的Image对象,则它将返回false。

要查看图像是否相同,您必须逐个像素/逐个字节地比较它们。

答案 1 :(得分:0)

Equals

  

确定指定的Object是否等于当前的Object。

由于这两个实例不同的object个实例,false是正确的结果。

要真正比较图像,您需要逐字节检查,AFAIK。

答案 2 :(得分:0)

.Equals()检查它们是否是对同一对象的引用。如果你想比较它们,你必须手动完成,比较所有像素的大小或颜色。

答案 3 :(得分:0)

默认情况下.Equals(object)comapres 引用相等。这意味着即使你加载相同的图像两次,它们是不同的实例的简单事实意味着它们将是不相等的。

答案 4 :(得分:0)

你称之为等于方法是比较引用的地址(也就是指针),因为你的对象可能被加载到两个不同的内存位置,结果是假的。

您应该编写自己的方法来比较更高级别的结构,例如,首先比较高度和宽度,如果它们相同则比较像素,可能Image类可以帮助您,但Equals可以从对象类所以不会帮助你。

答案 5 :(得分:0)

.Equals通常比较对象实例。您需要比较对象“content”。

查看此帖子:http://www.dreamincode.net/code/snippet2859.htm

或者:http://www.c-sharpcorner.com/UploadFile/prathore/ImageComparison01022009050404AM/ImageComparison.aspx