Я пытаюсь взять файл из 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 потоков памяти?В конечном итоге это займет кучу запросов, и я действительно хочу, чтобы он был максимально быстрым.