System.Drawing.Image.Save的GDI +中发生一般错误

问题描述 投票:22回答:5

Exception:] >>

GDI +中发生一般错误。在System.Drawing.Image.Save处(字符串文件名,ImageCodecInfo编码器,EncoderParameters encoderParams)在System.Drawing.Image.Save(字符串文件名,ImageFormat格式)在System.Drawing.Image.Save(String文件名)

代码:

] >>
byte[] bitmapData = new byte[imageText.Length];
MemoryStream streamBitmap;
bitmapData = Convert.FromBase64String(imageText);
streamBitmap = new MemoryStream(bitmapData);
System.Drawing.Image img = Image.FromStream(streamBitmap);
img.Save(path);

我们将base64字符串转换为MemoryStream,然后创建System.Drawing.Image(Image.FromStream(streamBitmap))。最后,图像将保存在临时文件中。

奇怪的是,当Web服务器上的活动(并发用户数)很高并且在IISRESET或应用程序池回收后暂时解决了问题,似乎出现了问题。

==>垃圾收集器问题?

我已经检查了TEMP文件夹的权限...

例外:GDI +中发生一般错误。在System.Drawing.Image.Save(String ...

c# asp.net .net image gdi+
5个回答
25
投票

从流中加载图像时,必须在图像的生命周期内保持流打开,请参见MSDN Image.FromStream

我认为是由于内存流甚至在处理映像之前就已关闭而引起的。您可以像这样更改代码


8
投票

请确保您指定的路径有效。如果文件路径不存在,使用前面的答案(在内存流中使用),您仍然可能会收到此确切错误“ GDI +中的通用错误”。将创建文件,目录路径必须存在。


2
投票

保存图像时,我遇到了相同的异常消息。原来我的代码很好,并且可以执行应做的事情。


2
投票

就我而言,以下代码段工作正常,其中ConvertedImageString


0
投票

当您调用“ Image.FromFile”或“ Image.Save”时,图像对象将在文件上保持锁定,直到将其明确处置为止。如果您对同一文件名执行另一个“ Image.Save”或“ Image.FromFile”,则可能会出现“通用错误”异常。这取决于垃圾收集器是否已处理了图像,因此结果不一致。

© www.soinside.com 2019 - 2024. All rights reserved.