0

我的应用程序是 asp.net MVC3,我使用图像处理程序开发了一个 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);

这将减少至少两倍的内存使用量。但我不确定我是否理解这里的真正问题,ASP.NET MVC 3 与您的问题有什么关系,以及将图像存储在 SQL Server 或 Session 中有何帮助。

于 2013-03-03T16:31:34.553 回答