Я разрабатываю базовый веб-сервис. Пользователь отправляет строку base 64, и служба должна возвращать изображение.
У меня есть этот класс:
public class myImage
{
public Byte[] Matrix { get; set; }
public int Width { get; set; }
public int Height { get; set; }
}
Матрица представляет собой массив байтов, содержащий значение пикселя в оттенках серого.
Я видел много тем (например, эту или этот) о преобразовании массива байтов в изображение, но у меня это не сработало . Я добавил ссылку на System.Drawing, но у меня есть ошибка:
Не удалось найти имя типа «Изображение» в пространстве имен «System.Drawing». Этот тип был перенаправлен в сборку «System.Drawing.Common, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = cc7b13ffcd2ddd51». Рассмотрите возможность добавления ссылки на эту сборку.
Я видел, что должен вернуть FileResult
, но я не могу создать результат, если не могу использовать System.Drawing.Image
:
[HttpPost]
[Route("CreateImage")]
public FileResult PostSealCryptItem([FromBody]String base64)
{
MyImage myImg = createImg(base64);
FileResult result = ?;
return result;
}
Как я могу создать FileResult
из моего массива байтов?
FileResult
- person Stefan   schedule 14.01.2019data:image/png;base64,iVBORw0KGgoAAA ANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4 //8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU 5ErkJggg==
- person Neal   schedule 14.01.2019System.Drawing.Image
. Этот класс используется для управления изображениями. Вы также не можете просто вернуть пиксельную матрицу, вам придется сначала создать фактические байты, которые вы хотите вернуть. Когда у вас есть фактический байтовый буфер или поток, вы можете вернуть их с помощьюreturn File(bytes,...)
илиreturn File(stream,...)
. - person Panagiotis Kanavos   schedule 14.01.2019var buffer=Convert.FromBase64String()
. Хотя это ничего не говорит о содержании. Если этот контент уже является допустимым изображением, вы можете просто вернуть его с помощьюreturn File(buffer,theactualcontenttype)
. Вам понадобится способ определить тип изображения или обман и использоватьapplication/octet-stream
. - person Panagiotis Kanavos   schedule 14.01.2019png
илиjpg
, вам понадобится библиотека, чтобы а) определить тип содержимого и б) преобразовать его в желаемый формат. формат. Я бы предложил использовать для этого ImageSharp вместоSystem.Drawing
. - person Panagiotis Kanavos   schedule 14.01.2019