A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More

Allan Thraen
May 19, 2017
  1018
(0 votes)

New add-on in the nuget feed: Enrich your image assets with Azure Cognitive Services.

Back in November as Ascend Nordic, I demoed an early version of this functionality. It was later improved and shown at the opening keynote of Ascend USA. I received quite a lot of requests after that to make it publicly available - and now (I admit a bit late, Jeroen even beat me to it) I'm now sharing it as a nuget package on the Episerver feed - as well as putting my code on GitHub.

Basically, this is how it works:

1) Install the nuget package on your Episerver site. (Episerver.Labs.Cognitive). Note that this is an experimental package and not supported in any way!

2) Add the access key to your appSettings in web.config (details are included in a readme).

And start adding the properties you want to your image model and attach attributes to them to describe what kind of cognitive content you want them populated with!

For instance, to add a descriptive text to your image (can be useful for indexing with Episerver Find or Vulcan) just add this attribute:

[Vision(VisionType =VisionTypes.Description)]
public virtual string Description { get; set; }

To index text recognized in the image add:

[Vision(VisionType=VisionTypes.Text)]
public virtual string TextRecognized { get; set; }

Or, one of my favorite features - Get a smart thumbnail (where the interesting parts of the image are in focus):

[ScaffoldColumn(false)]
[SmartThumbnail(100,100)]
public virtual Blob SmartThumbnail{ get; set; }

You can of course also extract a list of the age and gender of all people in the image like this:

[Vision(VisionType = VisionTypes.Faces)]
[BackingType(typeof(PropertyStringList))]
[Display(Order = 305)]
[UIHint(Global.SiteUIHints.Strings)]
public virtual string[] Faces { get; set; }

and much, much more.

Enjoy!

May 19, 2017

Comments

Please login to comment.
Latest blogs
A day in the life of an Optimizely OMVP: Learning Optimizely Just Got Easier: Introducing the Optimizely Learning Centre

On the back of my last post about the Opti Graph Learning Centre, I am now happy to announce a revamped interactive learning platform that makes...

Graham Carr | Jan 31, 2026

Scheduled job for deleting content types and all related content

In my previous blog post which was about getting an overview of your sites content https://world.optimizely.com/blogs/Per-Nergard/Dates/2026/1/sche...

Per Nergård (MVP) | Jan 30, 2026

Working With Applications in Optimizely CMS 13

💡 Note:  The following content has been written based on Optimizely CMS 13 Preview 2 and may not accurately reflect the final release version. As...

Mark Stott | Jan 30, 2026

Experimentation at Speed Using Optimizely Opal and Web Experimentation

If you are working in experimentation, you will know that speed matters. The quicker you can go from idea to implementation, the faster you can...

Minesh Shah (Netcel) | Jan 30, 2026

How to run Optimizely CMS on VS Code Dev Containers

VS Code Dev Containers is an extension that allows you to use a Docker container as a full-featured development environment. Instead of installing...

Daniel Halse | Jan 30, 2026

A day in the life of an Optimizely OMVP: Introducing Optimizely Graph Learning Centre Beta: Master GraphQL for Content Delivery

GraphQL is transforming how developers query and deliver content from Optimizely CMS. But let's be honest—there's a learning curve. Between...

Graham Carr | Jan 30, 2026