我的应用程序是asp.net MVC3,我开发了一个使用图像处理程序的dicom查看器,它运行良好,现在挑战是CT卡的MPR图像,有些情况下超过3000个图像,我无法打开它们进入浏览器缓存,我出现内存错误。作为一种解决方法,我当时只打开10个文件;它工作正常,但没有旋转(旋转视图anticlockwis earound选择轴)。我在处理程序中使用以下脚本。
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表中以加快uplaod?我要感谢你的建议,提前谢谢。
答案 0 :(得分:0)
您可以通过将图像直接写入响应输出流来避免将图像加载到中间字节数组变量和MemoryStream中:
context.Response.ContentType = "image/jpeg";
objImage.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
这会减少至少两倍的内存使用量。但我不确定我是否理解这里的真正问题,ASP.NET MVC 3与您的问题有什么关系以及如何在SQL Server或Session中存储图像会有所帮助。