0

我在我的应用程序中使用了一个ImageList和一个PictureBox。我正在PictureBoxImageList. 我需要检查图像中的图像PictureBox和图像中的某个索引ImageList是否相等。谁能指导我?

4

3 回答 3

2

不幸的是,Image该类没有实现==运算符或Equals方法,这意味着它继承了Object该类的默认实现,该实现仅检查对象引用是否相同。事实证明,这将失败,即使图像PictureBox直接分配给您的ImageList.

因此,您需要实现自己的逻辑来检查图像是否相同。有几种不同的方法。您可以将两个图像中的每一个加载到一个字节数组中并进行逐字节比较,或者您可以逐个像素地遍历两个图像并比较它们的颜色。当然,这两种方法都会相对缓慢到不合理的缓慢。您可以通过简单地首先比较尺寸(Image对象确实提供返回其尺寸的Size属性)并在它们不相等时返回 False 来进行优化,但这可能不适用于您的情况,因为ImageList将具有相同的尺寸。

如果是我,我会为自己省去麻烦,只需将图像的索引保留在ImageList我分配给PictureBox某个类级变量中的某个位置...

如果您不顾我的警告仍然坚定,请参阅此类似问题的答案。

于 2010-12-21T05:14:02.053 回答
1

伙计,而不是去寻找图像列表。只需使用列表框即可。我在 C# 中编写了一个工具,其中它需要用户的 2 个输入。首先是包含大量图像的文件夹,第二个是输入图像(您需要将其相似图像与大量图像分开。

  1. 何时取输入文件夹。列出 listBox 中文件夹的内容,即;文件夹中每个图像的路径。

  2. 现在,由于您拥有文件夹中每个图像的路径,因此将图像一张一张地放入位图的图像中,并将其与您之前提供的输入图像进行比较。使用任何方法或相似性度量来找出图像相同的程度或百分比。

  3. 注意 %,然后将它们与大量图像分开。(这又很容易,因为您拥有文件夹中每个图像的路径。)

我不知道我说清楚到什么程度。我希望这对你有所帮助。祝你好运

于 2011-03-27T06:07:21.153 回答
0

有绝对的解决办法

为图像赋值。

为每张图片添加不同的标签

这就是解决方案,然后您可以根据标签值进行比较

于 2013-10-11T08:15:21.670 回答