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
Nov 9, 2011
  6677
(7 votes)

Use a workflow to resize images upon upload

Here’s a little timesaver for you all to enjoy. Usually when you work with the web, it’s important to ensure that you use images in the size. And typically that size is not the same as you get the pictures in. Naturally you can fire up photoshop and resize your images, or better yet, use the image editing tool in EPiServer CMS to do the same. However, that gets a bit tedious when you have a lot of images to resize, like I had recently. In fact, I had so many images that I needed to convert to two different sizes, that after the first 8 I gave up and figured “there’s got to be an easier way”. And voila! Why not use workflows to do the job for us?  Building custom workflows is no where as scary as it may sound – and the WF engine in .NET (with support in EPiServer as well) has a few advantages we can use here, like a build-in UI to set start parameters, attaching to file system events and a workflow engine to ensure async execution of multiple workflows.

 

First,  install from NuGet  (when available) or download the source code here.

When the workflow is installed either configure it in the episerver.config, by putting this in:

<workflowSettings>
  <definitions>
    <definition type="EPiServer.Labs.Workflows.ImageResize.ResizeImage,EPiServer.Labs.Workflows.ImageResize"
      name="Resize uploaded images" description="Will automatically resize images to your specifications" />
  </definitions>
</workflowSettings>

 

Or adding it manually in the Admin UI.

image

 

Once the workflow type has been configured (and saved) you are ready to attach it to an automatic start event – in this case it makes the most sense to attach to “FileCheckedIn” which happens whenever a new version of a file is checked in.

 

image

However, we only want to resize certain image files, so under “Start Parameters” we configure the virtual path they are under, a file mask, and the max height/width we want to generate. The workflow will always ensure the correct aspect ration.

You also define a new file name for the generated image, where {0} and {1} are used as placeholders for the old filename and old file extension.

 

image

When all this is done, you can just start uploading files and see how resized versions magically appear.

 

image

Nov 09, 2011

Comments

Nov 9, 2011 03:50 PM

Brilliant!

Andrea Filyo
Andrea Filyo Nov 10, 2011 04:17 PM

Great way to use a workflow, will definitely try this out!

Nov 11, 2011 09:40 AM

Great! A standard workflow for the next release?

Nov 11, 2011 04:52 PM

Wow! That is neat. Can you suggest any use cases for it?

Jul 3, 2013 02:28 PM

Nice :-)
It would be even nicer if you copied the Unifiedfile-summary to the created files. In ResizeImage.cs, line 118, add something like:

var originalPath = File;
var originalUnifiedFile = HostingEnvironment.VirtualPathProvider.GetFile(originalPath) as UnifiedFile;
UnifiedFile.CopySummary(originalUnifiedFile, newfile);

mhmccabe
mhmccabe Feb 11, 2014 05:11 PM

Is this source code compatible with EPiServer 7.5?

Apr 3, 2017 11:38 AM

Is it compatiple with later versions of Episerver 7.5 and higher.

Please login to comment.
Latest blogs
Building simple Opal tools for product search and content creation

Optimizely Opal tools make it easy for AI agents to call your APIs – in this post we’ll build a small ASP.NET host that exposes two of them: one fo...

Pär Wissmark | Dec 13, 2025 |

CMS Audiences - check all usage

Sometimes you want to check if an Audience from your CMS (former Visitor Group) has been used by which page(and which version of that page) Then yo...

Tuan Anh Hoang | Dec 12, 2025

Data Imports in Optimizely: Part 2 - Query data efficiently

One of the more time consuming parts of an import is looking up data to update. Naively, it is possible to use the PageCriteriaQueryService to quer...

Matt FitzGerald-Chamberlain | Dec 11, 2025 |

Beginner's Guide for Optimizely Backend Developers

Developing with Optimizely (formerly Episerver) requires more than just technical know‑how. It’s about respecting the editor’s perspective, ensurin...

MilosR | Dec 10, 2025