Csharp/C#教程:System.Drawing.Image.Save中的GDI +发生了一般错误分享


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

例外:

GDI +中发生了一般错误。 System.Drawing.Image.Save(String filename)的System.Drawing.Image.Save(String filename,ImageCodecInfo encoder,EncoderParameters encoderParams)at System.Drawing.Image.Save(String filename,ImageFormat format)at 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或应用程序池回收后暂时解决时,问题似乎发生了……

==>垃圾收集器问题?

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

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

我认为exception是因为内存流甚至在图像被处理之前就被关闭了。 您可以像这样更改代码

 byte[] bitmapData = new byte[imageText.Length]; bitmapData = Convert.FromBase64String(imageText); using (var streamBitmap = new MemoryStream(bitmapData) { using (img = Image.FromStream(streamBitmap)) { img.Save(path); } } 

以下是一些讨论类似问题的线程的链接

gdi +错误从网页保存图像

绘制图像时:System.Runtime.InteropServices.ExternalException:GDI中发生一般错误

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

保存图像时遇到了相同的exception消息。 事实certificate我的代码很好并且做了应该做的事情。

问题是硬盘驱动器已满,因此无法创建新映像。 我在尝试保存我正在处理的项目时才注意到这一点,因为它没有空间来保存。

在我的情况下,下面的代码片段工作正常,其中ConvertedImageString是从API接收的Base64Image字符串,我将其转换为格式的相关图像,并将其保存到服务器上的物理文件文件夹。 编辑:发生上述错误可能是因为您尝试保存图像的文件路径错误

上述就是C#学习教程:System.Drawing.Image.Save中的GDI +发生了一般错误分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  string converted = ConvertedImageString.Replace('-', '+'); converted = converted.Replace('_', '/'); using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(ConvertedImageString))) { using (Bitmap bm1 = new Bitmap(ms)) { newFileName = id + ".jpg"; newFileName = CleanFileName(newFileName); newFileName = newFileName.Replace(" ", "_"); Path = Path + newFileName; bm1.Save(Path, ImageFormat.Jpeg); } } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/987986.html

(0)
上一篇 2021年12月23日
下一篇 2021年12月23日

精彩推荐