Redistribution and CMS Integration guide

Bundling ImageResizer Essential Edition with your CMS, module, or library

We encourage content management systems, modules, and other libraries to freely include and redistribute ImageResizer Essential Edition. Email your project URL to `[email protected]` and we will list you on the Community page. With advance notice, we can also verify if you are integrating ImageResizer properly.

Flexible licensing

We offer both commercial OEM and SaaS licenses (all royalty-free), as well as multiple OSI-compliant open-source licenses to ALL portions of ImageResizer.

Contact us by e-mail ([email protected]) or phone (+1.812.809.0605) to get assistance in determining your licensing needs.

You may also want to familiarize yourself with our various licenses. Look for "Index of licenses" at the bottom of the licenses page, and look at the OEM, SaaS, Enterprise, and AGPLv3 licenses. If you are only interested in redistributing the Essential Edition, you only need to read the Apache 2 license.

What about caching?

TinyCache is a lighter version of DiskCache, suitable for small websites and projects which aren't photo heavy.

TinyCache offers a fixed-size (30MB), disk-persisted memory cache. The average size of a resized image is 30KB, so TinyCache can generally store the 1,000 most popular image variations. We recommend that websites with over a few hundred images upgrade to DiskCache, which is designed to cache millions of images.

TinyCache is free, and included in ImageResizer Essential Edition. It can be redistributed at no charge.

Play nice with others

  • Ensure other plugins can still be installed, used, and activated.
  • Don't break RIAPI compliance (riapi.org). Content portability is important, and standardization is a good thing. Feel free to add new features and commands, but please leave existing functionality under the existing URL syntax.
  • Tell your users that you use ImageResizer, and that performance and functionality upgrades are available at http://imageresizing.net/licenses

Things to avoid

  • Replacing the URL API with your own syntax, so other plugins can't be used.
  • Inventing your own caching system that doesn't scale or handle threading and file access properly.
  • Using MVC, WebAPI, or a HttpHandler to serve dynamic images instead of the HttpHandler (uploads are fine).
  • Redistributing a custom version of the core ImageResizer.dll library, so users can't upgrade.
  • Resigning the ImageResizer dlls and not providing binding redirects for new releases (signing is bad, OK?).

CMS Integration Notes

File delivery

While most CMSes offer customized systems for file delivery, those systems are not optimized for dynamic image processing or disk caching. To achieve scalability and good performance, you should install the ImageResizer HttpModule in Web.Config and use it in the recommended fashion. URL rewriting, caching configuration, and authorization systems are all accessible through events exposed by the Config.Pipeline class.

File storage

ImageResizer offers plugins for every kind of blob, file, and database storage location. If an existing plugin doesn't meet your needs, it's easy to implement IVirtualImageProvider and plug ImageResizer into your existing file provider system. In fact, if your CMS (like most) already supports the ASP.NET VirtualPathProvider system, ImageResizer will automatically connect.

Uploads

Uploads can be accepted in a variety of ways; postback, MVC, WebAPI, HttpHandler - ImageResizer doesn't care. We suggest ensuring whitelist-based character and extension sanitization, and recommend GUID filenames to prevent concurrency bugs.

You may also consider sending uploads directly to blob storage, using the appropriate blob storage API. This will take load off your application servers, and ImageResizer can process the images dynamically as requested.

URL API

ImageResizer offers a highly-refined URL API, developed over 6 years through thousands of customer interactions. If you wish to limit attack surface, we offer many ways to accomplish that without breaking API compatibility or reducing functionality.

Authentication

ImageResizer is compatible with any AuthorizeRequest level authentication and authorization logic, and is also UrlAuthorization compatible.

User Interface

ImageResizer's standardized URL API means many jQuery plugins can take advantage of it. StudioJS offers a in-browser image editing experience, along with lower-level APIs for custom solutions. It's possible to integrate ImageResizer and jCrop in 11 lines of javascript.

The ImageResizer Community page lists dozens of plugins, jQuery plugins, and CMS modules that you might find helpful.