C#问题比较在内存中创建并从磁盘加载的位图的MD5

问题描述

我尝试通过计算MD5比较内存中创建的位图和从磁盘加载的位图。为什么我得到不同的结果?

MD5功能

    public static string GetMD5HashFromFileAsstream(Bitmap bitmap)
    {
        using (var md5 = MD5.Create())
        {
            using (MemoryStream memoryStream = new MemoryStream())
            {
                if (memoryStream != null)
                {
                    bitmap.Save(memoryStream,System.Drawing.Imaging.ImageFormat.Bmp);

                    memoryStream.Seek(0,SeekOrigin.Begin);
                    return BitConverter.ToString(md5.ComputeHash(memoryStream)).Replace("-",string.Empty);
                }
                else
                {
                    return "empty";
                }
            }
        }

    }

问题示例:

        Bitmap Bitmap = new Bitmap(1,2); //Create new bitmap x,y
        
        Console.WriteLine(GetMD5HashFromFileAsstream(Bitmap)); // Counting MD5


        Bitmap.Save(@"c:\test\BmpFile.bmp"); // Save on drive
        Bitmap AuxBitmap = new Bitmap(@"c:\test\BmpFile.bmp"); // Load from drive

        Console.WriteLine(GetMD5HashFromFileAsstream(AuxBitmap)); // Counting  MD5 
                
    // OUTPUT: MD5(Bitmap)  != MD5(AuxBitmap) 
   
    // 9A261ECE67F40519C4DB58E394F2CF84
    // 8E60CCA3D8C2301ECEA60ADBD55D39BA

为什么它们不同?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)