2013-07-29 2 views
0

Когда файл добавление пользователя,.net сворачивать изображения в сервере после загрузки, если в прошлом предельного размера

Что такое лучший способ проверить, если изображение ширин/высота над пределом, и изменить размер изображения, если это необходимо ?

В настоящее время я экспериментирую с сохранением HttpPostedFileBase в папке temp, чтобы загрузить его с помощью Bitmap.FromFile(). Просто проверьте ширину и высоту изображения.

Затем воспользуйтесь ImageResizer библиотекой, чтобы изменить размер изображения, используя ImageResizer.ImageJob.

До сих пор я поражаю out of memory exception на этапе Bitmap.FromFile(path).

+0

Попробуйте http://stackoverflow.com/questions/3075906/using -с-диез-хау может-я-размер-на-JPEG-изображение –

ответ

0

ImageResizer 3.4 включает в себя новый проект/плагин ImageUploadHelper, чтобы сделать это более безопасным и простым. (Вы можете найти это в папке/Плагины source download, но он еще не имеет пакет NuGet, как это все еще в предварительном просмотре.

long pixels = 0; 

try{ 
    var size = ImageUploadHelper.GetImageSize(httpPostedFile); 
    pixels = size[0] * size[1]; 
} catch{} //Corrupted images will cause an OutOfMemoryException. 

string resultPath = null; 
if (pixels > 3 * 1000 * 1000){ 
    var j = new ImageJob(httpPostedFile,"~/uploads/<guid>.<ext>", new Instructions("maxwidth=1700&maxheight=1700"); 
    j.Build(); 
    resultPath = PathUtils.GuessVirtualPath(j.FinalPath); 
}else{ 
    resultPath = "~/uploads/" + ImageUploadHelper.SaveUploadedFileSafely("~/uploads",httpPostedFile); 
}