使用带有 Azure 函数应用程序的 ImageResizer 图像尺寸被破坏

Image dimensions getting corrupted using ImageResizer with Azure function app

我有一个带有一个输入和两个输出的 azure 函数应用程序。在这种情况下,每当将图像上传到容器:originals 时,将触发函数应用程序,这将生成两个缩略图。

我使用 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) }
        };

    }
}

在验证它时,我发现它根据要求生成了两个不同的图像,但我发现其中一个文件已损坏。

正确图片:

图片损坏:

我对多张图片进行了验证,但发现了同样的问题。中等大小配置的图像总是损坏。

对上述代码的任何纠正都非常有帮助。

谁能帮我解决这个问题?

能否请您检查是否有任何其他功能应用程序已处于 运行ning 状态。总之我想说的是检查你在这个过程中开发的所有功能应用程序,它正在监控blob存储容器。我怀疑其他一些功能应用程序被触发并导致了这里的问题。请停止所有功能应用程序,并仅停止 运行 所需的功能应用程序,以查看它是否能解决您的问题。如果您需要任何进一步的帮助,请告诉我。