如何使用字节数组比较两个图像

Die*_*ego 17 c# image bytearray

我希望能够从Byte []转换为Image,反之亦然.

我从这里开始这两种方法:

public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
    MemoryStream ms = new MemoryStream();
    imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
    return  ms.ToArray();
}

public Image byteArrayToImage(byte[] byteArrayIn)
{
     MemoryStream ms = new MemoryStream(byteArrayIn);
     Image returnImage = Image.FromStream(ms);
     return returnImage;
}
Run Code Online (Sandbox Code Playgroud)

他们似乎工作,但如果我这样做:

byte[] pic = GetImageFromDb();
bool result = pic == imageToByteArray(byteArrayToImage(pic));
Run Code Online (Sandbox Code Playgroud)

我明白了result = false!

有没有办法纠正这种方法或一些不同的功能来实现我的目标?

谢谢!

Ode*_*ded 16

==如果不重写,则使用将比较对象引用.

由于这些是两个不同的 byte[]对象,因此引用是不同的.

您需要byte[]逐项比较对象,以确认它们是相同的.你可以SequenceEquals在这种情况下使用.

  • @ChrisShain - 问题是在不同的数组中有相同的项目 - 在那里排序并不重要.这里非常重要. (2认同)