我有一个在c#/.net中运行的应用程序,目前可以从一组嵌入式相机接收bayer格式的原始图像数据并将其转换为jpeg图像。为了节省传输时间,我修改了嵌入式设备,使其在传输之前将图像编码为jpeg格式。我是一名经验丰富的嵌入式程序员,但对c#/.net完全不熟悉。我已经成功地修改了应用程序,使用以下代码片段将数组保存到文件中并使用jpeg名称(偏移量5是跳过传输帧中的头数据):
FileStream stream = File.Create(fileName);
BinaryWriter writer = new BinaryWriter(stream);
writer.Write(multiBuff.msgData, 5, multiBuff.dataSize - 5);
writer.Close();
这些文件可以正常打开,但是现在我想将数据作为位图处理,而不必保存并从文件加载。我尝试在数据数组上执行以下操作:
MemoryStream stream = new MemoryStream(data);
BinaryReader reader = new BinaryReader(stream);
byte[] headerData = reader.ReadBytes(5);
Bitmap bmpImage = new Bitmap(stream);
但是这会抛出一个参数无效的异常。作为新手,我对所有涉及图像的类和方法都有点不知所措,而且看起来我正在做的事情应该很普遍,但我在通常的地方找不到任何示例。有什么想法吗?