Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Emgu读取图像和将其作为字节数组读取的区别_C#_Arrays_Image_Emgucv - Fatal编程技术网

C# 使用Emgu读取图像和将其作为字节数组读取的区别

C# 使用Emgu读取图像和将其作为字节数组读取的区别,c#,arrays,image,emgucv,C#,Arrays,Image,Emgucv,我有一个.png文件,我做了以下两件事 以字节数组的形式读取文件 byte[] arr = File.ReadAllBytes(Filename) 使用Emgu读取,将文件读入图像,然后使用以下命令将位图转换为字节数组 Image<Gray,Byte> Img = new Image<Gray,Byte>(Filename); byte[] arr = ImageToByte2(Img.Bitmap); public static byte[] ImageToBy

我有一个.png文件,我做了以下两件事

  • 以字节数组的形式读取文件

    byte[] arr = File.ReadAllBytes(Filename)
    
  • 使用Emgu读取,将文件读入图像,然后使用以下命令将位图转换为字节数组

    Image<Gray,Byte> Img = new Image<Gray,Byte>(Filename);
    byte[] arr = ImageToByte2(Img.Bitmap);
    
    
    public static byte[] ImageToByte2(Image img) 
    
    {
    
       using (MemoryStream stream = new MemoryStream())
    
       {
    
      img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
    
      return stream.ToArray();
    
       }
    
    }
    
    Image Img=新图像(文件名);
    字节[]arr=ImageToByte2(Img.Bitmap);
    公共静态字节[]ImageToByte2(图像img)
    {
    使用(MemoryStream stream=new MemoryStream())
    {
    保存(stream、System.Drawing.Imaging.ImageFormat.Png);
    返回流ToArray();
    }
    }
    

  • 字节数组的长度不同。我不明白为什么会有不同。请提供帮助。

    第一个选项读取文件的所有字节,包括标题,而第二个选项仅读取普通图像的字节


    有关png的结构和标题的更多信息,请参见此处:

    当您使用EMGU生成png字节数组时,您无法确定压缩级别是否与最初的png图像相同


    有一个重载,您可以在其中指定编码器参数。如果你调整压缩级别,也许你可以得到相同的字节长度。

    我可以在这两种情况下看到png头。只是一个问题。你想要两份相同位图的原因是什么?我正在使用Emgu预处理一张图像,然后将其送入一个库,该库要求图像为“字节数组-png格式”。除了长度之外,你能告诉我字节数组的不同吗?