Allan Thraen
Nov 9, 2011
  6818
(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
AEO/GEO: A practical guide

Search changed. People ask AI tools. AI answers. Your content must be understandable, citable, and accessible to both humans and machines. That’s...

Naveed Ul-Haq | Feb 17, 2026 |

We Cloned Our Best Analyst with AI: How Our Opal Hackathon Grand Prize Winner is Changing Experimentation

Every experimentation team knows the feeling. You have a backlog of experiment ideas, but progress is bottlenecked by one critical team member, the...

Polly Walton | Feb 16, 2026

Architecting AI in Optimizely CMS: When to Use Opal vs Custom Integration

AI is rapidly becoming a core capability in modern digital experience platforms. As developers working with Optimizely CMS 12 (.NET Core), the real...

Keshav Dave | Feb 15, 2026

Reducing Web Experimentation MAU Using the REST API

Overview Optimizely Web Experimentation counts an MAU based upon the script snippet rendering for evauluation of web experiement. Therefore when yo...

Scott Reed | Feb 13, 2026

Install the new AI Assistant Chat for Optimizely

AI Assistant Chat is a revolutionary feature introduced in version 3.0 of Epicweb.Optimizely.AIAssistant that brings conversational AI directly int...

Luc Gosso (MVP) | Feb 12, 2026 |

Building a TwoColumnWideLeftSection in Optimizely CMS 13 Visual Builder

This post walks through a practical “66% / 33%” section built for Visual Builder using the composition tag helpers: , , , and . Visual Builder is...

Francisco Quintanilla | Feb 12, 2026 |