C# CT cardic Dicom MPR,asp.net MVC c上传选项

C# CT cardic Dicom MPR,asp.net MVC c上传选项,c#,asp.net-mvc-3,session-variables,dicom,C#,Asp.net Mvc 3,Session Variables,Dicom,我的应用程序是asp.net MVC3,我使用图像处理程序开发了一个dicom查看器,效果很好,现在的挑战是CT cardic MPR图像,有些情况下超过3000个图像,我无法将它们打开到brower缓存中,内存不足错误。作为一种变通方法,我当时只打开10个文件;它可以正常工作,但不能旋转(沿选定轴逆时针旋转视图)。我正在处理程序中使用以下脚本 MemoryStream objMemoryStream = new MemoryStream(); objImage.Save(objMemorySt

我的应用程序是asp.net MVC3,我使用图像处理程序开发了一个dicom查看器,效果很好,现在的挑战是CT cardic MPR图像,有些情况下超过3000个图像,我无法将它们打开到brower缓存中,内存不足错误。作为一种变通方法,我当时只打开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表中以加快上传速度?感谢您的建议。

通过将图像直接写入响应输出流,您可以避免将图像加载到中间字节数组变量和内存流中:

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

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

你说的“不带旋转”是什么意思?我不确定我是否理解为什么在会话或SQL中存储会加快上载速度,因为当时它已经上载到服务器,所以我可能遗漏了什么。Adam,所谓旋转,我指的是围绕选定轴逆时针旋转视图。你是正确的上传不是正确的术语,我应该使用加载到内存中的文件。谢谢Hanks Darin,我的应用程序是asp.net MVC3。由于我没有DICOM方面的经验,我只是想知道是否有更好的方法来打开文件并避免内存不足错误。