【问题标题】:CT cardic Dicom MPR, asp.net MVC c# upload optionsCT cardic Dicom MPR, asp.net MVC c# 上传选项
【发布时间】:2013-03-03 06:06:49
【问题描述】:

我的应用程序是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 表中以加快上传速度?非常感谢您的建议,在此先感谢。

【问题讨论】:

  • 你是什么意思'不旋转',我不确定我是否理解为什么在会话或 SQL 中存储会加速上传的原因,因为当时它已经上传到服务器,所以我'我可能错过了什么。
  • 亚当,我所说的旋转是指围绕所选轴逆时针旋转视图。您是正确的上传不是正确的术语,我应该使用将文件加载到内存中。谢谢

标签: c# asp.net-mvc-3 session-variables dicom


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢 Darin,我的应用是 asp.net MVC3。由于我对 DICOM 没有经验,我只是想知道是否有更好的方法来打开文件并避免内存不足错误。
猜你喜欢
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
相关资源
最近更新 更多