您的位置:首页 > 其它

Image.Save()发生“GDI+ 中发生一般性错误”

2010-10-09 12:01 260 查看
从数据库中读取的图片是byte[]类型,将其转换成Image可以正常显示,但是调用image.Save()时会发生“GDI+ 中发生一般性错误”。
public static System.Drawing.Image ToImage(byte[]bytes)
{
System.IO.Stream ms = new System.IO.MemoryStream(bytes);
System.Drawing.Image image =System.Drawing.Image.FromStream(ms);
ms.Close();
image.Save( "C:////1.bmp ");//这一句出错
return Image;
}
怎样解决呢?在开发.NET应用中,使用 System.Drawing.Image.Save 方法而导致“GDI+ 中发生一般性错误”的发生,通常有以下三种原因:
1. 相应的帐户没有写权限。
解决方法:赋予 NETWORK SERVICE 帐户以写权限。
2. 指定的物理路径不存在。
解决方法:
在调用 Save 方法之前,先判断目录是否存在,若不存在,则创建。
if (!Directory.Exists(dirpath))
Directory.CreateDirectory(dirpath);
3. 保存的文件已存在并因某种原因被锁定。
解决方法:
重启IIS,解除锁定。并在代码中使用 using 语句,确保释放 Image 对象所使用的所有资源。 image.Save(); 保存到MemoryStream也是一样,如果存在未释放的对象那也只有可能是ms了,但是怎样释放它呢,我用using也不行啊!!!
把ms.Close();放在image.Save( "C:////1.bmp ");后面******

图像还没保存,流就关闭了。感谢 owennol !!!基本上 这是个微软的bug
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: