c# - 如何将数组中的 jpeg 转换为位图

标签 c# .net image forms

我在 c#/.net 中有一个正常运行的应用程序,它目前从一组嵌入式相机中接受拜耳格式的原始图像数据,并将它们转换为 jpeg 图像。为了节省传输时间,我修改了嵌入式设备以在传输之前将图像编码为 jpeg。我是一位经验丰富的嵌入式程序员,但完全是个 c#/.net 菜鸟。我已经设法修改应用程序以使用此代码段将数组保存到具有 jpeg 名称的文件中:(5 的偏移量用于跳过传输帧中的 header 数据)

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);

但是这会抛出一个参数无效的异常。作为一个新手,我对图像的所有类和方法有点不知所措,看起来我所做的应该是司空见惯的,但我在通常的地方找不到任何例子。有什么想法吗?

最佳答案

我认为您正在寻找 Bitmap.FromStream() :

Bitmap bmpImage = (Bitmap)Bitmap.FromStream(stream);

实际上使用 new Bitmap(stream) 应该也有效 - 这意味着流中的数据不构成有效图像 - 你确定 jpg 有效吗?您可以将它保存到磁盘并打开它,即在 Paint 中打开它进行测试吗?

关于c# - 如何将数组中的 jpeg 转换为位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5160299/

相关文章:

c# - 我应该如何处理每个都可能引发错误/异常的操作列表中的错误?

c# - 将html有序列表值传递给c#文本框并在sql查询中使用

c# - 编写 if 语句是否会以不同方式影响程序的速度和效率?

.net - F#尾递归调用

php - 图像在移动设备上正确旋转,而不是在桌面上

c# - 为什么我的剪贴板监听器被调用两次/应用程序打开两次?

.net - 当我发布 VB .NET 应用程序时,是否会包含引用?

c# - 在单元测试中,如果结果是 Guid,如何断言?

wpf - 单元测试 - 在测试项目中使用图像作为资源

c - 在 c 中逐个像素地模糊图像 - 特殊情况