У нас есть сценарий загрузки изображений в ASP.NET MVC3.WebImage и большое потребление памяти
Контроллер
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); ... } }
ImageManager
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. Мы передаем байт [] fileBytes для изменения размера образа imageManager. Менеджер изображений создает новый экземпляр WebImage, затем изменяет размер изображения и снова преобразует его в байт [].
При отладке этого кода, в настоящий момент, когда я передаю строку wi.GetBytes(), использование моей памяти резко возрастает (не менее 500 МБ). Я загружаю изображение 10mb. При загрузке фотографий меньшего размера (~ 1,5 МБ) потребление памяти в норме.
Что может быть причиной этого, и может ли это быть каким-то образом зафиксировано?
Спасибо