Image.Save(.)抛出GDI+异常

本文关键字:GDI+ 异常 抛出 Save Image | 更新日期: 2023-09-27 18:19:12

我从用户那里收到一张图片,想要保存它。一开始我做

Stream file = Request.Files[0].InputStream;

然后在

中传递上一步的file时执行保存操作。
using(var image = Image.FromStream(file)) {
    // Set the codec parameters with another method. No Stream involved
    image.Save(filename, codecInfo, codeParam); // Throws GDI+ exception
}

异常类型为:System.Runtime.InteropServices.ExternalException

Exception Message: A generic error occurred in GDI+

异常堆栈

:

at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)

已经提到了其他必须创建新流并保持打开的问题,但在我的情况下,我已经有一个输入流。如何解决这个问题?

Image.Save(.)抛出GDI+异常

我也遇到了同样的问题。我尝试了不同的编码器参数,不同的路径,但抛出了相同的异常。对我来说,首先将图像保存到内存流,然后保存到文件流是有效的。下面是一个片段:

   using(MemoryStream memoryStream = new MemoryStream())
   using(FileStream fileStream = File.Open(path, FileMode.OpenOrCreate))
   {
   image.Save(memoryStream, yourEncoder, yourEncoderParamaters);
   byte[] imgArray = memoryStream.ToArray();
   fileStream.Write(imgArray, 0, imgArray.Length);
   }