如何比较PictureBox和ImageList中的图像?

时间:2010-12-21 04:27:46

标签: c# .net image picturebox imagelist

我在我的应用程序中使用了ImageListPictureBox。我正在PictureBox中的图片中动态加载ImageList中的图片。我需要检查PictureBox中的图像和ImageList中图像的某个索引是否相等。谁能指导我?

3 个答案:

答案 0 :(得分:2)

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

因此,您需要实现自己的逻辑来检查图像是否相同。有几种不同的方法。您可以将两个图像中的每一个加载到一个字节数组中并进行逐字节比较,或者您可以逐个像素地循环这两个图像并比较它们的颜色。当然,这两种方法都会从相对到不合理的慢速变化。您可以通过简单地首先比较维度来优化(Image对象提供返回其维度的Size property)并且如果它们不相等则返回False,但这可能不适用于您的case,因为ImageList中的所有图片都具有相同的尺寸。

如果是我,我会为自己省去麻烦,只需将图像的索引保存在ImageList中,我将PictureBox分配给类级变量中的{{1}} ...

如果您仍然坚持我的警告,请参阅this similar question的答案。

答案 1 :(得分:1)

老兄,而不是去图像列表。只需使用列表框。 我在C#中编写了一个编程工具,其中需要来自用户的2个输入。首先是包含大量图像的文件夹,其次是输入图像(其类似图像需要与大量图像分开。

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

  2. 现在,因为你有路径 对于文件夹中的每个图像,请拍摄 将图像逐个放入图像中 位图并将其与输入进行比较 你之前给出的图片。使用 任何方法或相似性指标 找出到什么程度或什么% 图像相同。

  3. 注意%s然后 将它们从大部分中分离出来 图片。(这一点再简单了 你有每个图像的路径 文件夹。)

  4. 我不知道我在多大程度上明确了自己。我希望这对你有所帮助。祝你好运

答案 2 :(得分:0)

有绝对的解决方案

为图片指定值。

为每张图片标记不同

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