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)
已经提到了其他必须创建新流并保持打开的问题,但在我的情况下,我已经有一个输入流。如何解决这个问题?
我也遇到了同样的问题。我尝试了不同的编码器参数,不同的路径,但抛出了相同的异常。对我来说,首先将图像保存到内存流,然后保存到文件流是有效的。下面是一个片段:
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);
}