我正在尝试使用webjob处理上传到azure的图像。我有2个容器image
和thumbs
。
目前,我正在阅读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
容器中的主图像(如果它太大),压缩它并用它替换原始图像。
有没有办法读取和写入同一个blob?
答案 0 :(得分:1)
是的,你可以读/写同一个blob。例如,您可以使用input
更改CloudBlockBlob
绑定以绑定到FileAccess.ReadWrite
:
public static void GenerateThumbnail(
[QueueTrigger("addthumb")] ImageDTO blobInfo,
[Blob("images/{Name}", FileAccess.ReadWrite)] CloudBlockBlob input,
[Blob("thumbs/{Name}")] CloudBlockBlob output)
{
// Process the image
}
然后,您可以访问该blob上的OpenRead/OpenWrite
流方法以读取图像blob并根据需要处理/修改它。