将 Stream 转换为 Image 时参数无效异常

Posted

技术标签:

【中文标题】将 Stream 转换为 Image 时参数无效异常【英文标题】:Parameter is not valid exception while converting Stream to Image 【发布时间】:2013-06-28 00:36:51 【问题描述】:

我正在处理 Northwind.sdf 数据库,我正在尝试通过以下代码从员工表中保存员工的照片: 我得到了字节[]。 row 是来自 DataTable 的 DataRow。

byte[] b = (byte[])row["Photo"];
MemoryStream str = new MemoryStream(b);

Image im = Image.FromStream(str);
im.Save("Fuller.png");

我在尝试将流转换为图像时收到 Parameter is not valid 异常。

【问题讨论】:

Image.FromStream(str).... 简单地用谷歌搜索,我得到了这些:google.com/search?q=Parameter+is+not+valid+exception 最可能的原因是您的字节数组不包含有效的图像数据。 谢谢肯,我也用谷歌搜索了...从 Northwind 数据库中检索照片时需要进行任何解码还是我们需要做的事情 【参考方案1】:

根据这些文章:http://www.akadia.com/services/dotnet_load_blob.html 和 http://www.eggheadcafe.com/articles/20050911.asp “Northwind 员工表是从 MS Access 设计的,它需要一个 78 字节的 OLE 标头”。您必须从 MemoryStream 中省略前 78 个。

MemoryStream str = new MemoryStream(); 
int offset = 78;              
str.Write(b, offset, b.Length - offset);
Image im = Image.FromStream(str);

【讨论】:

以上是关于将 Stream 转换为 Image 时参数无效异常的主要内容,如果未能解决你的问题,请参考以下文章

Image.FromStream(ms) 提示参数无效

一直报Image img = Image.FromStream;参数无效,这要怎么改

winform中: datagridview发生以下异常: system.ArgumentException:参数无效

Image.FromStream 参数无效

为啥 Image.Save(Stream, ImageFormat) 会抛出异常?

Spring Cloud Stream消息JSON转换无效