XperienceCommunity.ImageProcessing
2.0.0
See the version list below for details.
dotnet add package XperienceCommunity.ImageProcessing --version 2.0.0
NuGet\Install-Package XperienceCommunity.ImageProcessing -Version 2.0.0
<PackageReference Include="XperienceCommunity.ImageProcessing" Version="2.0.0" />
<PackageVersion Include="XperienceCommunity.ImageProcessing" Version="2.0.0" />
<PackageReference Include="XperienceCommunity.ImageProcessing" />
paket add XperienceCommunity.ImageProcessing --version 2.0.0
#r "nuget: XperienceCommunity.ImageProcessing, 2.0.0"
#:package XperienceCommunity.ImageProcessing@2.0.0
#addin nuget:?package=XperienceCommunity.ImageProcessing&version=2.0.0
#tool nuget:?package=XperienceCommunity.ImageProcessing&version=2.0.0
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.
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.