Файл основного потока.net из Azure и изменение размера

Я пытаюсь взять файл из BLOB-объекта Azure, изменить его размер с помощью ImageSharp и передать его клиенту. У меня есть следующий код, который работает:

    public async Task<IActionResult> GetFile(string url, int width =0, int height=0) {
        // Connect to Azure
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobClient.GetContainerReference("images");
        CloudBlockBlob blockBlob = container.GetBlockBlobReference(url);


        var azureStream = new MemoryStream();          
        await blockBlob.DownloadToStreamAsync(azureStream);
        azureStream.Seek(0, SeekOrigin.Begin);

        var image = Image.Load(azureStream);
        image.Mutate(x=>x.Resize(new ResizeOptions(){
            Size = new Size(width, height),
            Mode = ResizeMode.Pad

        }));

        var stream = new MemoryStream();
        image.SaveAsPng(stream);
        stream.Seek(0, SeekOrigin.Begin);
        return File(stream, "image/png");

    }

Есть ли более эффективный способ сделать это против создания 2 потоков памяти? Это в конечном итоге потребует тонны запросов, и я действительно хочу, чтобы это было максимально эффективно.

0 ответов

Другие вопросы по тегам