繁体   English   中英

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

[英]How can I compare images in a PictureBox and an ImageList?

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

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

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

如果是我,我会省去麻烦,只需将图像索引保存在我分配给PictureBoxImageList中的类级别变量中的某个位置即可。

如果尽管我警告您仍然坚决,请参阅类似问题的答案。

杜德(Dude)而不是查找图像列表。 只需使用列表框即可。 我有一个用C#编写的工具,其中有2个来自用户的输入。 首先是包含大量图像的文件夹,其次是输入图像(您需要将其相似图像与大量图像分开)。

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

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

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

我不知道我在多大程度上清楚了自己。 希望对您有所帮助。 祝好运

有绝对的解决方案

为图像分配一个值。

为每个图像标记不同

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM