我如何比较(pictureBox1.Image与Properties.Resources.bug1)?

时间:2018-09-18 11:52:11

标签: c# equals picturebox

如何判断该图像(pictureBox1.Image)是否与Properties.Resources.bug1中的图像相同?

我了解到我无法以这种形式进行操作:

aliases

我发现,“如果需要比较,则需要自己的图像比较算法。可以通过逐像素比较来实现。”

那是什么意思,我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

我正在假设您的代码在某些时候正在执行

pictureBox1.Image = Properties.Resources.bug1;

如果您从其他地方获取图像,并且图像之间有一些细微的差异,则此方法不起作用。我敢肯定有更好,更有效的方法,但是这里有一些东西:

  1. 将image1转换为字节数组。
  2. 将image2转换为字节数组。
  3. 比较这些数组以查看它们是否相同。

    private byte[] GetImageBytes(Image img)
    {
        using (var ms = new System.IO.MemoryStream())
        {
            ImageConverter imgConverter = new ImageConverter();
            return (byte[])imgConverter.ConvertTo(img, typeof(byte[]));
        }
    }
    

    实施:

    bool sameImage = GetImageBytes(pictureBox1.Image).SequenceEqual(GetImageBytes(Properties.Resources.bug1));