Example #1
0
        public async Task FlowMessage(StorageFile file, string analysisResult, bool readText, bool completeAnalysis = false)
        {
            var flowNotificationMessage = new FlowMessage
            {
                HoloDescription = analysisResult,
                HoloReadText    = readText.ToString(),
                HoloImage       = GetDefaultImage()
            };

            if (file != null)
            {
                if (completeAnalysis)
                {
                    await PerformCompleteImageAnalysis(file, flowNotificationMessage);
                }

                try
                {
                    var uriName = await AzureBlobUploader.UploadFiletoAzureBlobReturnUri(file);

                    flowNotificationMessage.HoloImage = uriName;
                    Debug.WriteLine(flowNotificationMessage.HoloImage);
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e);
                }
            }

            var         jsonBody    = Newtonsoft.Json.JsonConvert.SerializeObject(flowNotificationMessage);
            var         client      = new HttpClient();
            HttpContent contentPost = new StringContent(jsonBody, Encoding.UTF8, "application/json");
            await client.PostAsync(new Uri(Config.FlowUrl), contentPost).ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode());
        }
Example #2
0
        public async Task PerformCompleteImageAnalysis(StorageFile file, FlowMessage flowNotificationMessage)
        {
            try
            {
                AnalysisResult result;
                await Task.Run(async() =>
                {
                    Task.Yield();

                    using (var fileStreamImage = File.OpenRead(file.Path))
                    {
                        var vsClient = new VisionServiceClient(Config.VisionApiKey);
                        VisualFeature[] visualFeatures =
                        {
                            VisualFeature.Categories, VisualFeature.Description, VisualFeature.Faces, VisualFeature.Tags
                        };
                        result = await vsClient.AnalyzeImageAsync(fileStreamImage, visualFeatures);
                    }

                    flowNotificationMessage.FaceCount       = result.Faces?.Length.ToString();
                    flowNotificationMessage.CategoriesCount = result.Categories?.Length.ToString();
                    flowNotificationMessage.TagCount        = result.Tags?.Length.ToString();

                    if (result.Categories?.Length > 0)
                    {
                        foreach (var category in result.Categories)
                        {
                            flowNotificationMessage.Categories =
                                $"{category.Name}, {category.Detail}, {category.Score};{Environment.NewLine}";
                        }
                    }

                    if (result.Faces?.Length > 0)
                    {
                        foreach (var face in result.Faces)
                        {
                            flowNotificationMessage.Faces = $"{face.Age}, {face.Gender};{Environment.NewLine}";
                        }
                    }

                    if (result.Tags?.Length > 0)
                    {
                        foreach (var tag in result.Tags)
                        {
                            flowNotificationMessage.Tags = $"{tag.Name}, {tag.Confidence}, {tag.Hint};{Environment.NewLine}";
                        }
                    }
                });
            }
            catch (Exception exception)
            {
                flowNotificationMessage.Exception = exception.ToString();
            }
        }