2

我从用户那里收到一张图片并想保存它。最初我做

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+

堆栈跟踪:

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

已经提到了其他必须创建新流并保持打开状态的问题,但就我而言,我已经有一个输入流。我该如何解决这个问题?

4

1 回答 1

1

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

   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);
   }
于 2013-06-20T08:43:59.170 回答