2016-01-27 5 views
3

Как получить поток файлов загруженного изображения (IFormFile) и изменить его размер?Загрузка и изменение размера ASP.NET Core

public ActionResult Upload(IFormFile file) 
{ 
    using (var reader = new StreamReader(file.OpenReadStream())) 
    { 
     var fileContent = reader.ReadToEnd(); 
     var parsedContentDisposition = ContentDispositionHeaderValue.Parse(file.ContentDisposition); 

     //scale image here? 
    } 
} 

ответ

2

Вы можете использовать IFormFile.OpenReadStream(), чтобы получить поток, а затем просто вставить поток в Image. Для этого экземпляра я масштабировал его до 1024x768.

Image image = Image.FromStream(file.OpenReadStream(), true, true); 
var newImage = new Bitmap(1024, 768); 
using (var g = Graphics.FromImage(newImage)) 
{ 
    g.DrawImage(image , 0, 0, 1024, 768); 
} 

Вы можете использовать newImage, чтобы сохранить или делать все, что вы хотите с.

+1

Это будет работать, если оно нацелено на полную структуру, а не только на ядро. Я могу ошибаться, но я не думаю, что есть способ манипулировать изображениями в ядре. http://www.hanselman.com/blog/RFCServersideImageAndGraphicsProcessingWithNETCoreAndASPNET5.aspx (Есть достаточно вещей для меня, что я нацелился на 4,6 библиотеки по таким причинам). –

+0

asp.net-core и asp.net 5 являются временными синонимами на stackoverflow; Однако я буду обновлять тег, чтобы включить asp.net для ясности. Я говорил о полной структуре (4.6 и ядре) fyi. Благодаря! –

+0

Имеет смысл. ;-) –

Смежные вопросы