in Application/StepFunctions/extract-image-metadata/Function.cs [31:65]
public async Task<ImageMetadata> FunctionHandler(ExecutionInput state, ILambdaContext context)
{
var logger = new ImageRecognitionLogger(state, context);
var srcKey = WebUtility.UrlDecode(state.SourceKey);
var tmpPath = Path.Combine(Path.GetTempPath(), Path.GetFileName(srcKey));
try
{
var metadata = new ImageMetadata();
using (var response = await S3Client.GetObjectAsync(state.Bucket, srcKey))
{
using (var sourceImage = Image.Load(response.ResponseStream, out var format))
{
metadata.OriginalImagePixelCount = sourceImage.Width * sourceImage.Height;
metadata.Width = sourceImage.Width;
metadata.Height = sourceImage.Height;
metadata.ExifProfile = sourceImage.Metadata.ExifProfile;
metadata.Format = format.Name;
}
}
await logger.WriteMessageAsync(new MessageEvent {Message = "Photo metadata extracted succesfully"},
ImageRecognitionLogger.Target.All);
return metadata;
}
finally
{
if (File.Exists(tmpPath)) File.Delete(tmpPath);
}
}