Я пытаюсь взять изображение, изменить его размер с помощью ImageSharp с помощью image.Mutate, сохранить его в поток и вернуть изображение в виде файла через контроллер mvc клиенту Angular. Это мой код, который я использую для изменения изображения:
public static MemoryStream ImageResizeStream(byte[] data, int maxHeight, int maxWidth, bool keepIfLower, string extension)
{
var size = new ImageSize();
using (var image = Image.Load(data))
{
size.Height = image.Height;
size.Width = image.Width;
}
ImageSize newSize = ScaleSize(size, maxWidth, maxHeight);
var newStream = new MemoryStream();
try
{
using (var image = Image.Load(data))
{
image.Mutate(x => x
.Resize(newSize.Width, newSize.Height));
image.Save(newStream, GetImageEncoder(extension));
}
return newStream;
}
catch (Exception exception)
{
Console.Write(exception.Message);
}
return null;
}
public class ImageSize
{
public ImageSize()
{
}
public ImageSize(int width, int height)
{
Width = width;
Height = height;
}
public int Height { get; set; }
public int Width { get; set; }
}
И это код действия контроллера, который его использует:
(AlterImage - класс, возвращающий поток)
private FileStreamResult SetResult(SystemLogo logo)
{
var logoExtension = logo.FileName.Split('.').Last();
var fileType = string.Empty;
switch (logoExtension)
{
case "png":
fileType = "image/png";
break;
case "jpg":
fileType = "image/jpg";
break;
case "gif":
fileType = "image/gif";
break;
}
//var maxHeight = 38;
//var maxWidth = 100;
var newStream = AlterImage.ImageResizeStream(logo.Content, 38, 100, true, logoExtension);
var result = File(newStream, fileType);
return result;
}
(я возвращаю это как результат действия)
На клиенте появляется ошибка 500, которую я пока не смог отследить. Есть что-то, чего я здесь не хватает?