ASP.NET出力PNGピクチャのGDI+一般エラーの解決方法

945 ワード

以下は原文です.
Code:
 
  
Response.Clear();
Response.ContentType = "image/PNG";
img.Save(Response.OutputStream, ChartFormat.Png);

異常が発生したのはGDI+一般的なエラーです.ただし、フォーマットが
Code:
 
  
Response.ContentType = "image/jpeg";

間違いを報告しません.
幸い前に出会ったことがあるので,変えた.
Code:
 
  
Response.ContentType = "image/PNG";
using (MemoryStream ms = new MemoryStream())
{
img.Save(ms, ChartFormat.Png);
Response.OutputStream.Write(ms.GetBuffer(), 0, (int)ms.Length);
}

pngピクチャを入力できます.
これはResponseのためです.OutputStreamというストリームの読み取り不能によるCanSeekプロパティ
falseです.png画像生成時はjpegではなく、ストリーム式ではなく、すでに書き込まれているものは管理されず、戻る必要があります
構造データを継続的に書き込む.しかしresponseストリームはseekに戻ることができないので、そのまま使うとだめです.できるようにする
seekのMemoryStreamは、pngピクチャになってresponseストリームに出力されます.