将Stream转换为Image时,参数无效

时间:2013-06-28 00:36:51

标签: c# database image stream

我正在使用Northwind.sdf数据库,我试图通过以下代码从Employees表中保存Employee的照片: 我得到了字节[]。 row是DataTable的DataRow。

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

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

尝试将流转换为图像时,我收到参数无效异常。

1 个答案:

答案 0 :(得分:2)

根据这些文章:http://www.akadia.com/services/dotnet_load_blob.htmlhttp://www.eggheadcafe.com/articles/20050911.asp “Northwind Employees表是从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);