发布到Azure blob存储时自动生成缩略图或预览图像

ma0*_*a08 7 azure azure-storage azure-storage-blobs

我将图片发布到Azure blob存储.当我存储全分辨率图像时,我想要维护图像的缩略图(或预览)的单独集合.是否可以编写脚本(或钩子),当图像上传到blob存储时,图像的缩略图也会自动保存.

请告知是否有办法编写此脚本.

我不想在客户端或服务器端进行大小调整.我使用SAS使客户端能够直接将图像上传到blob存储.我可以将图像发送到我正在运行的移动服务(服务器),其中图像可以调整大小并上传到blob存储.但我不想用这些调用重载服务器.

小智 5

是的,这确实是可能的,您可以通过使用BlobTrigger部署WebJob来实现这一点,BlobTrigger接受新创建的blob的输入流并允许您将其修改为输出blob,使用优秀的imageresizing.net库代码看起来像这样:

public static void ResizeMicroImages(
        [BlobTrigger("orig/{name}.{ext}")] Stream input,
        [Blob("90x126/{name}.png", FileAccess.Write)] Stream output
){
        ImageBuilder.Current.Build(new ImageJob(input, output, new Instructions()
        {
            AutoRotate = true,
            Width = 90,
            Height = 126,
            OutputFormat = OutputFormat.Png,
        }));
    }
Run Code Online (Sandbox Code Playgroud)

然而,在我们的设置中,当我们在对未处理的blob进行初始检查时,使用webjob抛出OutOfMemoryExceptions来获取大量图片时我们遇到了问题,但这可能是我们的设置特有的(我们有很多图片).我们更改为手动将消息添加到存储队列,而是让webjob使用QueueTrigger处理它.