代码之家  ›  专栏  ›  技术社区  ›  santosh kumar patro

使用带有Azure function应用程序的ImageResizer,图像维度已损坏

  •  0
  • santosh kumar patro  · 技术社区  · 6 年前

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

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

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

    enter image description here

    损坏图像:

    enter image description here

    对上述代码的任何更正都非常有用。

    有人能帮我解决这个问题吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Viral Jain    6 年前

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