Создать растровое изображение из тела httpRequest - PullRequest
0 голосов
/ 27 мая 2019

Я отправляю изображение через почтальона

enter image description here Я хочу использовать изображение в качестве растрового изображения в моей функции.

Я пытаюсь

  public static async Task<HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("IsFundusCalled");

            string name = req.Query["image"];
            var imageData = ReadFully(req.Body);
            Bitmap image;
            using (var ms = new MemoryStream(imageData))
            {
                image = new Bitmap(ms);
            }
            MemoryStream memoryStream = new MemoryStream();
            image.Save(memoryStream, ImageFormat.Jpeg);

            HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
            httpResponseMessage.Content = new ByteArrayContent(memoryStream.ToArray());
            httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
            httpResponseMessage.StatusCode = HttpStatusCode.OK;

            return httpResponseMessage;
        }

        //from /164696/sozdanie-baitovogo-massiva-iz-potoka
        public static byte[] ReadFully(Stream input)
        {
            byte[] buffer = new byte[16 * 1024];
            using (MemoryStream ms = new MemoryStream())
            {
                int read;
                while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
                {
                    ms.Write(buffer, 0, read);
                }
                return ms.ToArray();
            }
        }

но я получаю ошибку: "System.Private.CoreLib: Исключительная ситуация при выполнении функции: IsFundus. ZKWeb.System.Drawing: Обнаружена нулевая ссылка или недопустимое значение [GDI + status: InvalidParameter]." от: image.Save(memoryStream, ImageFormat.Jpeg);

1 Ответ

1 голос
/ 27 мая 2019

Вместо того, чтобы загружать ваше изображение в виде данных формы, загрузите его как почтальон в двоичном формате, и оно должно работать нормально. Ваш код функции выглядит хорошо до сих пор. (Я бы удалил «get», хотя, в заголовке Function, так как только POST действительно имеет смысл для вашего случая)

...