public async Task <VisionAnalysis> AnalyzeImageUrlAsync(string imageUrl, CancellationToken token) { var client = AuthenticateClient(); _logger.LogInformation($"Analyze image with ep {_settings.Endpoint}"); // analyze image _logger.LogInformation($"Analyze image {imageUrl}"); var results = await client.AnalyzeImageAsync(imageUrl, visualFeatures : GetVisualFeatureTypes(), cancellationToken : token); var data = JsonConvert.SerializeObject(results); // _logger.LogInformation(data); var analysis = new VisionAnalysis(); // description foreach (var caption in results.Description.Captions) { analysis.Descriptions.Add(new VisionSummary(caption.Text, caption.Confidence)); } // categories foreach (var category in results.Categories) { analysis.Categories.Add(new VisionCategory(category.Name, category.Score)); } // tags foreach (var tag in results.Tags) { analysis.Tags.Add(new VisionSummary(tag.Name, tag.Confidence)); } // object detection foreach (var obj in results.Objects) { var rect = new Models.BoundingRect(obj.Rectangle.X, obj.Rectangle.Y, obj.Rectangle.W, obj.Rectangle.H); analysis.Objects.Add(new VisionObject(obj.Confidence, obj.ObjectProperty, rect)); } // color var vColor = new VisionColor( results.Color.IsBWImg, results.Color.AccentColor, results.Color.DominantColorBackground, results.Color.DominantColorForeground, results.Color.DominantColors); analysis.AddColor(vColor); _logger.LogInformation("returning analysis"); return(analysis); }
public async Task <VisionResult> Handle(VisionProcessRequest request, CancellationToken cancellationToken) { _logger.LogInformation($"Process request: {request.FileName}"); var imgUrl = await _storageService.SaveDocumentAsync(request.FileName, request.ContentType, request.DataStream, cancellationToken); VisionAnalysis analysis = null; string thumbnailUrl = null; if (!string.IsNullOrEmpty(imgUrl)) { analysis = await _visionService.AnalyzeImageUrlAsync(imgUrl, cancellationToken); thumbnailUrl = await GenerateThumbnailAsync(imgUrl, request.ContentType, cancellationToken); } return(new VisionResult { Success = true, Url = imgUrl, Analysis = analysis, ThumbnailUrl = thumbnailUrl }); }