- PR -

GDI+で一般的なエラーが発生しました

1
投稿者投稿内容
すけちゃん
会議室デビュー日: 2004/07/23
投稿数: 2
投稿日時: 2004-07-23 18:38
ASP.NETでWeb上に描画したいと考えています。
コードは次のとおりです。
ここまではうまくいきます。
Bitmap b = new Bitmap(100,100);
Graphics g = Graphics.FromImage(b);
g.FillRectangle(Brushes.Gray,0,0,100,100);
g.DrawRectangle(Pens.Black,25,25,50,50);
b.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);

上記コードで、JpegをPngに変更すると、とたんにエラーが発生してしまいます。
b.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Png);

発生するエラーは次のとおりです。
『GDI+で一般的なエラーが発生しました』

Pngにしたい理由は次のとおりです。
・文字を書くとJpegだと文字周辺がモヤモヤしてしまう
・gifだと色が少ない

ということで、なんとかPngで描画したいと考えております。
なにかいい方法はないでしょうか?
あみゅせる
常連さん
会議室デビュー日: 2004/07/08
投稿数: 33
お住まい・勤務地: 神奈川県
投稿日時: 2004-07-23 19:22
こんばんは。

これだととおりますね。

コード:
    Bitmap b = new Bitmap(100,100); 
    Graphics g = Graphics.FromImage(b); 
    g.FillRectangle(Brushes.Gray,0,0,100,100); 
    g.DrawRectangle(Pens.Black,25,25,50,50); 
    Stream s = new MemoryStream();
    b.Save(s,System.Drawing.Imaging.ImageFormat.Png);
    byte[] buf=new byte[s.Length];
    s.Seek(0,System.IO.SeekOrigin.Begin);
    s.Read(buf,0,(int)s.Length);
    Response.OutputStream.Write(buf,0,(int)s.Length);



OuputStreamはCanRead/CanSeekがfalseなので
コーデック内部でストリームを読みなおしたりして
怒られてるのかもしれません。
_________________
すけちゃん
会議室デビュー日: 2004/07/23
投稿数: 2
投稿日時: 2004-07-23 19:36
あみゅせるさん、こんばんは。
そして、ありがとうございました。
教えていただいたコードをそのまま使用してみました。
結果、うまくいきました。
助かりました。
しかし、内容が難しく、まだ意味を理解していません。
これから勉強します。
今後もよろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)