Размеры изображения искажаются с помощью ImageResizer с приложением-функцией Azure - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть приложение-функция Azure с одним входом и двумя выходами. В этом случае всякий раз, когда изображение загружается в контейнер: оригиналы, запускается приложение функции, которое генерирует два миниатюрных изображения.

Я разработал следующее функциональное приложение с использованием VS2017 и развернул его на портале Azure.

Код:

using ImageResizer;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System;
using System.Collections.Generic;
using System.IO;

namespace FunctionApp1
{
    public static class Function1
    {

        [FunctionName("Function1")]
        public static void Run(
                                [BlobTrigger("originals/{name}", Connection = "xxxxxxx")]Stream image,
                                [Blob("thumbs/s-{name}", FileAccess.ReadWrite, Connection = "xxxxxxx")]Stream imageSmall,
                                [Blob("thumbs/m-{name}", FileAccess.ReadWrite, Connection = "xxxxxxx")]Stream imageMedium,
                            TraceWriter log)
        {
            var imageBuilder = ImageResizer.ImageBuilder.Current;
            var size = imageDimensionsTable[ImageSize.Small];

            imageBuilder.Build(
                image, imageSmall,
                new ResizeSettings(size.Item1, size.Item2, FitMode.Max, null), false);

            image.Position = 0;
            size = imageDimensionsTable[ImageSize.Medium];

            imageBuilder.Build(
                image, imageMedium,
                new ResizeSettings(size.Item1, size.Item2, FitMode.Max, null), false);
        }

        public enum ImageSize
        {
            ExtraSmall, Small, Medium
        }

        private static Dictionary<ImageSize, Tuple<int, int>> imageDimensionsTable = new Dictionary<ImageSize, Tuple<int, int>>()
        {
            { ImageSize.ExtraSmall, Tuple.Create(320, 200) },
            { ImageSize.Small,      Tuple.Create(640, 400) },
            { ImageSize.Medium,     Tuple.Create(800, 600) }
        };

    }
}

При проверке я обнаружил, что он генерирует два разных изображения в соответствии с требованиями, но я вижу, что один из файлов поврежден.

CorrectImage:

enter image description here

CorruptedImage:

enter image description here

Я сделал проверку для нескольких изображений, но вижу ту же проблему. Изображение с конфигурацией среднего размера всегда будет повреждено.

Любые исправления приведенного выше кода очень полезны.

Может кто-нибудь помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 10 сентября 2018

Можете ли вы проверить, есть ли какое-либо другое приложение-функция уже в рабочем состоянии. Короче говоря, я хотел бы сказать, что проверьте все функциональные приложения, которые вы разработали в этом процессе, который отслеживает контейнер хранения больших двоичных объектов. Я подозреваю, что некоторые другие функции приложения запускаются и вызывают проблему здесь. Пожалуйста, остановите все функциональные приложения и запустите только необходимое функциональное приложение, чтобы увидеть, решит ли оно вашу проблему. Пожалуйста, дайте мне знать, если вам понадобится дополнительная помощь по этому вопросу.

...