我的应用程序是asp.net MVC3,我已经开发了一个使用图像处理器的dicom查看器,它工作得很好,现在的挑战是CT cardic 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表中,以加快上传速度?我很感谢你的建议,提前谢谢。
发布于 2013-03-04 00:31:35
您可以通过直接将图像写入响应输出流来避免在中间字节数组变量和MemoryStream中加载图像:
context.Response.ContentType = "image/jpeg";
objImage.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);这将减少至少两倍的内存使用量。但我不确定我是否理解这里的真正问题,SQLMVC3与您的问题有什么关系,在ASP.NET Server或Session中存储图像会有什么帮助。
https://stackoverflow.com/questions/15182967
复制相似问题