0

Я пытаюсь обрабатывать изображения, загруженные в azure с помощью webjob. У меня есть 2 контейнера image и thumbs.WebJob, чтобы читать и писать на тот же Azure blob

В настоящее время я читаю из контейнера image, создавая миниатюру и записывая ее в контейнер thumbs, используя следующий код, который отлично работает.

public static void GenerateThumbnail([QueueTrigger("addthumb")] ImageDTO blobInfo, 
       [Blob("images/{Name}", FileAccess.Read)] Stream input, [Blob("thumbs/{Name}")] CloudBlockBlob outputBlob) 
    { 
     using (Stream output = outputBlob.OpenWrite()) 
     { 
      ConvertImageToThumbnail(input, output, blobInfo.Name); 
      outputBlob.Properties.ContentType = GetMimeType(blobInfo.Name); 
     } 
    } 

Теперь я хотел бы, чтобы изменить размер основного изображения из image контейнера (если он слишком велик), сжать его и заменить оригинал с ним.

Есть ли способ читать и писать в один и тот же блокнот?

ответ

1

Да, вы можете читать/писать в один и тот же блокнот. Например, вы можете изменить ваш input связывания для связывания с CloudBlockBlobFileAccess.ReadWrite помощью:

public static void GenerateThumbnail(
    [QueueTrigger("addthumb")] ImageDTO blobInfo, 
    [Blob("images/{Name}", FileAccess.ReadWrite)] CloudBlockBlob input, 
    [Blob("thumbs/{Name}")] CloudBlockBlob output) 
{ 
    // Process the image 
} 

Вы можете получить доступ к OpenRead/OpenWrite методам потока на этом сгусток, чтобы прочитать блобы изображения и процесс/изменить его по мере необходимости.

+0

Отлично, я попробую! – CoOl

+0

Глядя на ваш пример, я полагаю, мне не нужно использовать очередь вообще? Могу ли я запускать функцию webjob, когда новый контейнер добавляется в контейнер? – CoOl

+1

Я просто обновил пример :) Технически вам не нужна очередь, но использование очереди является рекомендуемым шаблоном. 'BlobTrigger' может запускаться автоматически, но могут быть задержки, как описано [здесь] (https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-blobs-how- к /). – mathewc