У меня есть приложение-функция 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:
CorruptedImage:
Я сделал проверку для нескольких изображений, но вижу ту же проблему. Изображение с конфигурацией среднего размера всегда будет повреждено.
Любые исправления приведенного выше кода очень полезны.
Может кто-нибудь помочь мне решить эту проблему?