public static async Task Run( [EventGridTrigger] EventGridEvent eventGridEvent, [Blob("{data.url}", FileAccess.Read)] Stream input, ILogger log) { try { if (input != null) { var createdEvent = ((JObject)eventGridEvent.Data).ToObject <StorageBlobCreatedEventData>(); var extension = Path.GetExtension(createdEvent.Url); var encoder = SupportFuncs.GetEncoder(extension); if (encoder != null) { Task <string> storeImgInfoTask = SupportFuncs.StoreImgInfo(createdEvent.Url, input); await storeImgInfoTask; if (storeImgInfoTask.Result == "") { log.LogInformation($"Something went wrong trying to create ImgInfo."); } } else { log.LogInformation($"No encoder support for: {createdEvent.Url}"); } } } catch (Exception ex) { log.LogInformation(ex.Message); throw; } }
public static async Task Run( [EventGridTrigger] EventGridEvent eventGridEvent, [Blob("{data.url}", FileAccess.Read)] Stream input, ILogger log) { try { if (input != null) { var createdEvent = ((JObject)eventGridEvent.Data).ToObject <StorageBlobCreatedEventData>(); var extension = Path.GetExtension(createdEvent.Url); var encoder = SupportFuncs.GetEncoder(extension); if (encoder != null) { var thumbnailWidth = Convert.ToInt32(Environment.GetEnvironmentVariable("THUMBNAIL_WIDTH")); var thumbContainerName = Environment.GetEnvironmentVariable("THUMBNAIL_CONTAINER_NAME"); var storageAccount = CloudStorageAccount.Parse(BLOB_STORAGE_CONNECTION_STRING); var blobClient = storageAccount.CreateCloudBlobClient(); var container = blobClient.GetContainerReference(thumbContainerName); var blobName = SupportFuncs.GetBlobNameFromUrl(createdEvent.Url); var blockBlob = container.GetBlockBlobReference(blobName); using (var output = new MemoryStream()) using (Image <Rgba32> image = Image.Load(input)) { var divisor = image.Width / thumbnailWidth; var height = Convert.ToInt32(Math.Round((decimal)(image.Height / divisor))); image.Mutate(x => x.Resize(thumbnailWidth, height)); image.Save(output, encoder); output.Position = 0; await blockBlob.UploadFromStreamAsync(output); } } else { log.LogInformation($"No encoder support for: {createdEvent.Url}"); } } } catch (Exception ex) { log.LogInformation(ex.Message); throw; } }