Azure-Funktion - Größe des in einem Blob-Container gespeicherten Bilds ändern

Ich habe geantwortetdiese Frag im Zusammenhang mit Azure Webjob und Ändern der Größe eines als Blob gespeicherten Bilds. Daher versuche ich, dasselbe mit einem @ zu tuFunction App

Jedes Mal, wenn ein neuer Blob hochgeladen wird, sende ich eine neue Warteschlangennachricht. Meine Funktion wird durch die Warteschlangennachricht ausgelöst und an den hochgeladenen Blob gebunden. Ich habe auch eine zweite Eingabebindung, die an einen anderen CloudBlobContainer gebunden wird, um neue Bilder mit geänderter Größe in einen anderen Blob-Container hochladen zu können.

Meine Funktion sieht so aus:

#r "System.Web"
using System.IO;
using System.Web;
using ImageResizer;
using Microsoft.Azure.WebJobs;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;

private static readonly int[] Sizes = { 800, 500, 250 };

public static void Run(string filename, Stream blobStream, CloudBlobContainer container, TraceWriter log)
{
    log.Verbose($"C# Queue trigger function processed: {filename}");
    // Extract the filename  and the file extension
    var name = Path.GetFileNameWithoutExtension(filename);
    var ext = Path.GetExtension(filename);

    // Get the mime type to set the content type
    var mimeType = MimeMapping.GetMimeMapping(filename);

    foreach (var width in Sizes)
    {
        // Set the position of the input stream to the beginning.
        blobStream.Seek(0, SeekOrigin.Begin);

        // Get the output stream
        var outputStream = new MemoryStream();
        ResizeImage(blobStream, outputStream, width);

        // Get the blob reference
        CloudBlockBlob blob = container.GetBlockBlobReference($"{name}-w{width}.{ext}");

        // Set the position of the output stream to the beginning.
        outputStream.Seek(0, SeekOrigin.Begin);
        blob.UploadFromStream(outputStream);

        // Update the content type =>  don't know if required
        blob.Properties.ContentType = mimeType;
        blob.SetProperties();
    }               
}

private static void ResizeImage(Stream input, Stream output, int width)
{
    var instructions = new Instructions
    {
        Width = width,
        Mode = FitMode.Carve,
        Scale = ScaleMode.Both
    };
    var imageJob = new ImageJob(input, output, instructions);

    // Do not dispose the source object
    imageJob.DisposeSourceObject = false;
    imageJob.Build();
}

Der zugehörigefunction.json Datei

{
"bindings": [
  {
    "queueName": "newfileuploaded",
    "connection": "crazytunastorageaccount_STORAGE",
    "name": "filename",
    "type": "queueTrigger",
    "direction": "in"
  },
  {
    "path": "input-images/{queueTrigger}",
    "connection": "crazytunastorageaccount_STORAGE",
    "name": "blobStream",
    "type": "blob",
    "direction": "in"
  },
  {
    "name": "container",
    "type": "blob",
    "path": "output-images",
    "connection": "crazytunastorageaccount_STORAGE",
    "direction": "in"
  }
],
"disabled": false
}

Und dieproject.json Datei

{
"frameworks": {
  "net46":{
    "dependencies": {
      "ImageResizer": "4.0.5",
      "WindowsAzure.Storage": "4.3.0"
    }
  }
 }
}

Jetzt, wenn ich die Funktion kompiliert habe, habe ich immer diesen Fehler erhalten:

Microsoft.Azure.WebJobs.Host: Fehler beim Indizieren der Methode 'Functions.ResizeBlobImage'. Microsoft.Azure.WebJobs.Host: Blob kann nicht an den Typ "Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer" gebunden werden.

Wird dieser Typ momentan unterstützt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage