我们在 ASP.NET MVC3 中有图像上传的场景。
控制器
public ActionResult Upload(IEnumerable<HttpPostedFileBase> images, SomeViewModel model) { foreach(var i in images) { ... byte[] fileBytes = i.InputStream.GetBytesArray(); byte[] image = _imageManager.Resize(fileBytes, MaxImageWidth, MaxImageHeight, true); ... } }
图像管理器
public byte[] Resize(byte[] content, int width, int height, bool preserveAR = true) { if (content == null) return null; WebImage wi = new WebImage(content); wi = wi.Resize(width, height, preserveAspectRatio); return wi.GetBytes(); }
所以我们从客户端接收图像作为 HttpPostedFileBase。我们将 byte[] fileBytes 传递给 imageManager 的 Resize 方法。图像管理器正在创建新的 WebImage 实例,然后调整图像大小并再次将其转换为 byte[]。
调试此代码时,当我通过 wi.GetBytes() 行时,我的内存使用量急剧增加(至少 500mb)。我正在上传 10mb 的图片。上传较小尺寸的照片(~1.5mb)时,内存消耗是正常的。
这可能是什么原因,可以通过某种方式解决吗?
谢谢