XperienceCommunity.ImageProcessing 2.0.1

dotnet add package XperienceCommunity.ImageProcessing --version 2.0.1
                    
NuGet\Install-Package XperienceCommunity.ImageProcessing -Version 2.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="XperienceCommunity.ImageProcessing" Version="2.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="XperienceCommunity.ImageProcessing" Version="2.0.1" />
                    
Directory.Packages.props
<PackageReference Include="XperienceCommunity.ImageProcessing" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add XperienceCommunity.ImageProcessing --version 2.0.1
                    
#r "nuget: XperienceCommunity.ImageProcessing, 2.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package XperienceCommunity.ImageProcessing@2.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=XperienceCommunity.ImageProcessing&version=2.0.1
                    
Install as a Cake Addin
#tool nuget:?package=XperienceCommunity.ImageProcessing&version=2.0.1
                    
Install as a Cake Tool

Xperience Community: Image Processing

Description

This package provides a way to resize images and convert them to webp, jpg, and png formats. It supports images from Media libraries and Content hub items stored as Content item assets.

⚠️ Consider Kentico's Native Image Variants

Before using this package, consider Kentico's native Image Variants feature introduced in recent versions. The native solution:

  • ✅ Officially supported by Kentico
  • ✅ Integrated into the Content Hub UI
  • ✅ Pre-generated variants for better performance
  • ✅ No additional dependencies

This package is still useful if you need:

  • On-the-fly image processing without pre-generation
  • Media library image support (native variants are Content Hub only)
  • Dynamic query parameter-based transformations
  • Fit modes (cover, contain, fill) and crop positioning
  • Legacy project compatibility

Future deprecation: As Kentico's native solution matures and adds more features, this package may be deprecated. For new projects, we recommend starting with the native Image Variants feature.

Library Version Matrix

Xperience Version Library Version
>= 30.11.1 2.0.0+
>= 29.1.4 1.x

Dependencies

Package Installation

Add the package to your application using the .NET CLI

dotnet add package XperienceCommunity.ImageProcessing

Quick Start

  1. Install NuGet package above.

  2. Add the following configuration to your appsettings.json:

     {
       "ImageProcessing": {
         "ProcessMediaLibrary": true,
         "ProcessContentItemAssets": true,
         "MaxWidth": 5000,
         "MaxHeight": 5000,
         "MaxSideSize": 5000,
         "Quality": 80
       }
     }
    
    • ProcessMediaLibrary: Set to true to enable image processing for Media library images. Defaults to true.
    • ProcessContentItemAssets: Set to true to enable image processing for Content Hub assets. Defaults to true.
    • MaxWidth: Maximum allowed width in pixels. Requests exceeding this will be capped. Defaults to 5000.
    • MaxHeight: Maximum allowed height in pixels. Requests exceeding this will be capped. Defaults to 5000.
    • MaxSideSize: Maximum allowed value for the maxSideSize parameter. Requests exceeding this will be capped. Defaults to 5000.
    • Quality: JPEG/WebP encoding quality (1-100). Higher values produce better quality but larger file sizes. Defaults to 80.
  3. Register the Image Processing middleware using app.UseXperienceCommunityImageProcessing():

     var builder = WebApplication.CreateBuilder(args);
    
     // ...
    
     builder.Services.Configure<ImageProcessingOptions>(builder.Configuration.GetSection("ImageProcessing"));
    
     var app = builder.Build();
    
     app.UseKentico();
    
     // ...
    
     app.UseXperienceCommunityImageProcessing();
    
  4. You should be able to use the width, height, and maxSideSize query parameters on your image URLs to resize the image. Examples:

    1. Resize the Media library image to a width of 100px:
      https://yourdomain.com/getmedia/rest-of-your-asset-url?width=100
      
    2. Resize the Content item asset image to a height of 100px:
      https://yourdomain.com/getContentAsset/rest-of-your-asset-url?height=100
      
  5. You can also use the format query parameter to convert the image to a different format. Allowed values are: webp, jpg and png. Example:

    1. Convert the Media library image to webp:
      https://yourdomain.com/getmedia/rest-of-your-asset-url?format=webp
      
    2. Convert the Content item asset image to png:
      https://yourdomain.com/getContentAsset/rest-of-your-asset-url?format=png
      
  6. Use the fit parameter to control how images are resized. Available modes:

    • contain (default): Fit image inside dimensions, maintaining aspect ratio

      https://yourdomain.com/getmedia/rest-of-your-asset-url?width=500&height=500&fit=contain
      
    • cover: Fill dimensions exactly, cropping excess while maintaining aspect ratio

      https://yourdomain.com/getmedia/rest-of-your-asset-url?width=500&height=500&fit=cover
      
    • fill: Stretch image to exact dimensions, ignoring aspect ratio

      https://yourdomain.com/getmedia/rest-of-your-asset-url?width=500&height=500&fit=fill
      
  7. Use the crop parameter with fit=cover to control crop positioning:

    • center (default): Crop from center

      https://yourdomain.com/getmedia/rest-of-your-asset-url?width=500&height=500&fit=cover&crop=center
      
    • north, south, east, west: Crop from edges

      https://yourdomain.com/getmedia/rest-of-your-asset-url?width=500&height=500&fit=cover&crop=north
      
    • northeast, northwest, southeast, southwest: Crop from corners

      https://yourdomain.com/getmedia/rest-of-your-asset-url?width=500&height=500&fit=cover&crop=southeast
      

Production Recommendations

Use a CDN

Strongly recommended: Place a CDN (like Cloudflare, Azure CDN, or CloudFront) in front of your website for production deployments.

  • The middleware generates ETags for efficient browser/CDN caching
  • First request processes the image, subsequent requests are served from CDN cache
  • Dramatically reduces server load and improves performance
  • Sets Cache-Control: public, max-age=31536000 (1 year) for optimal caching

Without a CDN, every unique image variant will be processed on your server, which can be memory and CPU intensive.

Parameter Validation

The middleware automatically validates and clamps dimension parameters:

  • width, height, and maxSideSize values exceeding the configured maximums are automatically capped
  • Default maximum values are 5000 pixels for all dimensions
  • Adjust MaxWidth, MaxHeight, and MaxSideSize in configuration based on your needs
  • Quality values outside the 1-100 range are automatically clamped

This prevents abuse while ensuring requests always succeed with reasonable values.

Contributing

Feel free to submit issues or pull requests to the repository, this is a community package and everyone is welcome to support.

License

Distributed under the MIT License. See LICENSE.md for more information.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on XperienceCommunity.ImageProcessing:

Package Downloads
XperienceCommunity.Baseline.Core.RCL.Xperience

The Baseline a set of Core Systems, Tools, and Structure to ensure a superior Kentico Website that's easy to migrate, for Kentico Xperience 13 and eventually Xperience by Kentico

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.1 164 10/26/2025
2.0.0 164 10/26/2025
1.1.2 166 10/26/2025
1.1.1 2,228 8/5/2024
1.1.0 111 8/3/2024
1.0.0 172 7/8/2024