CSharp - Image.Save(..) 引发 GDI+ 异常

  显示原文与译文双语对照的内容
0 0

这个问题已经有了如下答案:

我正在接收来自用户的图像并希望保存它。 我最初做的是


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

异常消息: A generic error occurred in GDI+

Stacktrace:


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

引用了新的流必须创建并保持开放的其他问题,但在我的例子中,我已经有了一个输入流。 如何解决这个问题?

时间: 原作者:

0 0

我也有同样的问题。 我尝试了不同的编码器 paramaters,不同的路径,但抛出相同的异常。 我可以将图像先保存到 memorystream,然后保存到文件流。 这里有一个 Fragment 。


 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);
 }

...