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

时间:2017-08-02 14:38:21

标签: c# arrays image emgucv

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

  1. 将文件读取为字节数组

    byte[] arr = File.ReadAllBytes(Filename)
    
  2. 使用Emgu读取它,将文件读入Image,然后使用以下内容将Bitmap转换为字节数组。

    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();
    
       }
    
    }
    
  3. 我在字节数组的长度上有所不同。我不明白为什么会有区别。请帮忙。

1 个答案:

答案 0 :(得分:1)

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

有关png的结构和标题的更多信息,请参阅:https://en.wikipedia.org/wiki/Portable_Network_Graphics