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 に答える