Ich spiele mit Azure-Funktionen und Bildmanipulation und gebe sie dann in einem separaten Blob-Container aus.Azure-Funktionen Bildgröße ändern Inhaltstyp
ich es geschafft, diese „offizielle“ Beispiel auf Github zu finden https://github.com/Azure/azure-webjobs-sdk-templates/blob/dev/Functions.Templates/Templates/ImageResizer-CSharp/run.csx
using ImageResizer;
public static void Run(
Stream image, // input blob, large size
Stream imageSmall, Stream imageMedium) // output blobs
{
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) }
};
Dies wird unter Verwendung einer run.csx
Datei, ich bin Codierung in Visual Studio 2017 Preview mit jedoch eine „Azure-Funktionen“ Vorlagenprojekt, das verwendet .cs-Dateien. So ist alles so ziemlich das gleiche in meinem Code, aber ich habe meine Funktion Signatur als
[FunctionName("watermark-func")]
public static void Run(
[BlobTrigger("images/{name}", Connection = "myStorage_STORAGE")]Stream image,
[Blob("watermarked-images/s-{name}", Connection = "myStorage_STORAGE")]Stream imageSmall,
[Blob("watermarked-images/m-{name}", Connection = "myStorage_STORAGE")]Stream imageMedium,
TraceWriter log)
Dieser Code funktioniert wie ein Charme, nimmt es das ankommende Bild, dann auf eine mittlere und kleine Größe ändern, dann speichern zu mein aus Container. Das Problem, das ich habe, ist, dass der Inhaltstyp dieser neu erstellten Bilder auf application/octet-stream
gesetzt ist?
Gibt es eine Möglichkeit, den richtigen Typ von image/jpeg
anzugeben? Ich habe in sah ein CloudBlockBlob
verwenden und die Einstellung der Properties.ContentType = "image/jpeg"
wenn Stream imageSmall
CloudBlockBlob imageSmall
ist jedoch bekomme ich einen Fehler
Kann nicht blob binden Schreibzugriff auf CloudBlockBlob verwenden.
Excellent Dank aussehen würde. Ich war fast da, wie ich ursprünglich hatte '[Blob (" ... ", FileAccess.Write, Connection ...]' –