0

私のアプリケーションはasp.netMVC3で、イメージハンドラーを使用してdicomビューアーを開発しましたが、うまく機能します。現在の課題はCTカーディックMPRイメージであり、3000を超える場合もあり、ブラウザーのキャッシュに開くことができませんでした。メモリ不足エラーが発生します。回避策として、一度に10個のファイルを開くだけです。正常に動作しますが、回転では動作しません(回転ビューの反時計回りの選択した軸)。ハンドラーで次のスクリプトを使用しています。

MemoryStream objMemoryStream = new MemoryStream();
objImage.Save(objMemoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] imageContent = new byte[objMemoryStream.Length];
objMemoryStream.Position = 0;
objMemoryStream.Read(imageContent, 0, (int)objMemoryStream.Length);
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(imageContent);

私の質問は、画像をセッション変数に保存するか、画像をSQLテーブルにバイナリデータとして保存して、更新を高速化する方がよいかということです。よろしくお願いします。

4

1 に答える 1

0

応答出力ストリームに直接書き込むことで、中間バイト配列変数とMemoryStreamに画像をロードすることを回避できます。

context.Response.ContentType = "image/jpeg";
objImage.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

これにより、メモリ使用量が少なくとも2倍削減されます。しかし、ここでの本当の問題、ASP.NET MVC 3があなたの質問と何の関係があるのか​​、SQLServerまたはSessionに画像を保存することがどのように役立つのかを理解できません。

于 2013-03-03T16:31:34.553 に答える