异常:
-- GDI+中发生了一个泛型错误。在System.Drawing.Image.Save(字符串文件名,ImageCodecInfo编码器,EncoderParameters encoderParams)在System.Drawing.Image.Save(String文件名,ImageFormat格式)在System.Drawing.Image.Save(String filename)
代码:
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或应用程序池循环之后暂时解决了这个问题……
==>垃圾收集器问题?
我已经查过临时文件夹的权限了..。
发布于 2014-03-28 09:26:42
当您从流加载图像时,您必须在图像的生存期内保持流处于打开状态,请参见此MSDN Image.FromStream。
我认为导致异常的原因是内存流甚至在图像被处理之前就关闭了。您可以这样修改代码:
byte[] bitmapData = new byte[imageText.Length];
bitmapData = Convert.FromBase64String(imageText);
using (var streamBitmap = new MemoryStream(bitmapData))
{
using (img = Image.FromStream(streamBitmap))
{
img.Save(path);
}
}
下面是一些与讨论类似问题的线程的链接:
当绘制图像: System.Runtime.InteropServices.ExternalException:时,GDI中发生了一个泛型错误
发布于 2015-08-06 18:26:59
确保您指定的路径是有效的。使用前面的答案(在内存流上使用),如果文件路径不存在,您可能仍然会得到这个确切的错误“GDI+中的泛型错误”。文件将被创建,目录路径必须存在。
发布于 2015-05-12 10:02:20
在保存图像时,我遇到了相同的异常消息。结果证明我的代码很好,可以做它应该做的事情。
问题是硬盘已经满了,因此无法创建新的映像。我只在试图保存我正在处理的项目时才注意到这一点,因为它没有空间可以保存。
https://stackoverflow.com/questions/22708150
复制相似问题