XperienceCommunity.ImageProcessing
2.0.1
dotnet add package XperienceCommunity.ImageProcessing --version 2.0.1
NuGet\Install-Package XperienceCommunity.ImageProcessing -Version 2.0.1
<PackageReference Include="XperienceCommunity.ImageProcessing" Version="2.0.1" />
<PackageVersion Include="XperienceCommunity.ImageProcessing" Version="2.0.1" />
<PackageReference Include="XperienceCommunity.ImageProcessing" />
paket add XperienceCommunity.ImageProcessing --version 2.0.1
#r "nuget: XperienceCommunity.ImageProcessing, 2.0.1"
#:package XperienceCommunity.ImageProcessing@2.0.1
#addin nuget:?package=XperienceCommunity.ImageProcessing&version=2.0.1
#tool nuget:?package=XperienceCommunity.ImageProcessing&version=2.0.1
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
Install NuGet package above.
Add the following configuration to your
appsettings.json:{ "ImageProcessing": { "ProcessMediaLibrary": true, "ProcessContentItemAssets": true, "MaxWidth": 5000, "MaxHeight": 5000, "MaxSideSize": 5000, "Quality": 80 } }ProcessMediaLibrary: Set totrueto enable image processing for Media library images. Defaults totrue.ProcessContentItemAssets: Set totrueto enable image processing for Content Hub assets. Defaults totrue.MaxWidth: Maximum allowed width in pixels. Requests exceeding this will be capped. Defaults to5000.MaxHeight: Maximum allowed height in pixels. Requests exceeding this will be capped. Defaults to5000.MaxSideSize: Maximum allowed value for themaxSideSizeparameter. Requests exceeding this will be capped. Defaults to5000.Quality: JPEG/WebP encoding quality (1-100). Higher values produce better quality but larger file sizes. Defaults to80.
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();You should be able to use the
width,height, andmaxSideSizequery parameters on your image URLs to resize the image. Examples:- Resize the Media library image to a width of 100px:
https://yourdomain.com/getmedia/rest-of-your-asset-url?width=100 - Resize the Content item asset image to a height of 100px:
https://yourdomain.com/getContentAsset/rest-of-your-asset-url?height=100
- Resize the Media library image to a width of 100px:
You can also use the
formatquery parameter to convert the image to a different format. Allowed values are:webp,jpgandpng. Example:- Convert the Media library image to
webp:https://yourdomain.com/getmedia/rest-of-your-asset-url?format=webp - Convert the Content item asset image to
png:https://yourdomain.com/getContentAsset/rest-of-your-asset-url?format=png
- Convert the Media library image to
Use the
fitparameter to control how images are resized. Available modes:contain(default): Fit image inside dimensions, maintaining aspect ratiohttps://yourdomain.com/getmedia/rest-of-your-asset-url?width=500&height=500&fit=containcover: Fill dimensions exactly, cropping excess while maintaining aspect ratiohttps://yourdomain.com/getmedia/rest-of-your-asset-url?width=500&height=500&fit=coverfill: Stretch image to exact dimensions, ignoring aspect ratiohttps://yourdomain.com/getmedia/rest-of-your-asset-url?width=500&height=500&fit=fill
Use the
cropparameter withfit=coverto control crop positioning:center(default): Crop from centerhttps://yourdomain.com/getmedia/rest-of-your-asset-url?width=500&height=500&fit=cover&crop=centernorth,south,east,west: Crop from edgeshttps://yourdomain.com/getmedia/rest-of-your-asset-url?width=500&height=500&fit=cover&crop=northnortheast,northwest,southeast,southwest: Crop from cornershttps://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, andmaxSideSizevalues exceeding the configured maximums are automatically capped- Default maximum values are 5000 pixels for all dimensions
- Adjust
MaxWidth,MaxHeight, andMaxSideSizein 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 | Versions 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. |
-
net8.0
- Kentico.Xperience.webapp (>= 30.11.1)
- SkiaSharp (>= 3.119.1)
- SkiaSharp.NativeAssets.Linux.NoDependencies (>= 3.119.1)
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.