public virtual IImageDescription GetImageDescription(MediaItem m, string language)
        {
            ICognitiveSearchResult csr = Searcher.GetAnalysis(m.ID.ToString(), language, m.Database.Name);

            Description d = csr
                            ?.VisionAnalysis
                            ?.Description
                            ?? new Description();

            return(ImageDescriptionFactory.Create(d, m.Alt, m.ID.ToString(), m.Database.Name, language));
        }
예제 #2
0
        public virtual IImageDescription GetImageDescription(MediaItem m, string language)
        {
            ICognitiveImageSearchResult csr = GetCognitiveSearchResult(m.ID.ToString(), language, m.Database.Name);

            Description d = csr
                            ?.VisionAnalysis
                            ?.Description;

            if (d == null)
            {
                return(null);
            }

            return(ImageDescriptionFactory.Create(d, m.Alt, m.ID.ToString(), m.Database.Name, language));
        }
        public virtual IImageDescription GetImageDescription(MediaItem m, string language)
        {
            IImageSearchResult csr = GetSearchResult(m.ID.ToString(), language, m.Database.Name);

            if (csr == null)
            {
                return(null);
            }

            List <string> descriptions = new List <string>();

            var captions = csr
                           .VisionAnalysis
                           ?.Description
                           ?.Captions
                           .Where(a => a.Confidence > Settings.TagConfidenceThreshold)
                           .Select(a => a.Text)
                           .ToList();

            var hasCaptions = captions != null && captions.Any();
            var hasPeople   = csr.People != null && csr.People.Any();

            if (hasCaptions && hasPeople)
            {
                descriptions.Add($"{string.Join(", ", csr.People)} - {captions.First()}");
            }
            else if (hasCaptions)
            {
                descriptions.AddRange(captions);
            }
            else if (hasPeople)
            {
                descriptions.Add(string.Join(", ", csr.People));
            }

            return(ImageDescriptionFactory.Create(descriptions, m.Alt));
        }