C# 使用Emgu读取图像和将其作为字节数组读取的区别
我有一个.png文件,我做了以下两件事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
byte[] arr = File.ReadAllBytes(Filename)
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格式”。除了长度之外,你能告诉我字节数组的不同吗?