SharpPixel.AspNetCore.ImageResizer 2.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package SharpPixel.AspNetCore.ImageResizer --version 2.0.0
                    
NuGet\Install-Package SharpPixel.AspNetCore.ImageResizer -Version 2.0.0
                    
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="SharpPixel.AspNetCore.ImageResizer" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SharpPixel.AspNetCore.ImageResizer" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="SharpPixel.AspNetCore.ImageResizer" />
                    
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 SharpPixel.AspNetCore.ImageResizer --version 2.0.0
                    
#r "nuget: SharpPixel.AspNetCore.ImageResizer, 2.0.0"
                    
#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 SharpPixel.AspNetCore.ImageResizer@2.0.0
                    
#: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=SharpPixel.AspNetCore.ImageResizer&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=SharpPixel.AspNetCore.ImageResizer&version=2.0.0
                    
Install as a Cake Tool

SharpPixel.AspNetCore.ImageResizer 🚀

NuGet Version NuGet Downloads License

A high-performance, asynchronous, and DoS-protected image resizing middleware for ASP.NET Core built on top of SkiaSharp v3. It intercepts static image requests on-the-fly, processes them based on query parameters, and caches the result for maximum efficiency.


🌟 Features

  • High Performance: Powered by SkiaSharp v3 for fast, native image manipulation.
  • DoS Protection: Automatically prevents server resource exhaustion by restricting resizing requests to predefined dimensions and qualities.
  • Smart Caching: Server-side caching for processed images and customizable Cache-Control headers for browsers.
  • Modern Formats: Supports converting images to next-gen formats like WebP on-the-fly.
  • Flexible Processing Modes: Support for crop (smart cropping) and pad (padding with backgrounds).

📦 Installation

Install the package via NuGet CLI:

dotnet add package SharpPixel.AspNetCore.ImageResizer

Or via the Package Manager Console:

Install-Package SharpPixel.AspNetCore.ImageResizer

🚀 Quick Start & Integration

  1. Configure your Program.cs To activate the image resizing capabilities, register the service and place the middleware in your request pipeline. Note: The middleware must be placed before UseStaticFiles.
using Mind.AspNetCore.ImageResizer;

var builder = WebApplication.CreateBuilder(args);

// Add services with DoS protection and cache configurations
builder.Services.AddImageResizer(options =>
{
    options.MaxDimension = 2000;                          // Safety ceiling for width/height
    options.CacheDuration = TimeSpan.FromHours(12);        // Server-side disk cache lifetime
    options.CacheControlHeader = "public, max-age=43200"; // Browser-side cache (12 Hours)
});

var app = builder.Build();

// CRITICAL: Intercept image requests before the static files handler serves them
app.UseImageResizer();

app.UseStaticFiles();

app.MapGet("/", () => "Image Resizer is running smoothly! 🎉");

app.Run();

Image Resizing Modes & Query Parameters Once the middleware is active, you can dynamically transform any image located inside your wwwroot folder simply by appending query parameters (w, h, mode, quality, format) to its URL.

Here are the visual modes supported by the package:

  1. Resize by Width Only (w) Maintains the original aspect ratio automatically while scaling the width down to 300px.
<img src="/images/scenery.jpg?w=300" alt="Resized Width" />
  1. Smart Center Crop (mode=crop)Resizes the image and crops it perfectly into a $400 \times 400$ square from the center, discarding any overflowing edges. Excellent for user avatars!
<img src="/images/avatar.jpg?w=400&h=400&mode=crop" alt="Center Cropped" />
  1. Padded Fit (mode=pad)Fits the entire image inside an $800 \times 600$ bounding box without cropping anything. Any empty spaces are padded with a solid background color (perfect for e-commerce product grids).
<img src="/images/product.jpg?w=800&h=600&mode=pad" alt="Padded Product" />
  1. Format Conversion & Quality Compression (format & quality) Converts the output format on-the-fly to a next-gen format like WebP and drops the compression quality to 60% for extreme web performance optimization.
<img src="/images/banner.png?w=1000&quality=60&format=webp" alt="Optimized WebP" />

Query Reference Table

Parameter Allowed Values Example Description
w Integer (up to MaxDimension) ?w=500 Sets the target width in pixels.
h Integer (up to MaxDimension) ?h=300 Sets the target height in pixels.
mode crop | pad ?mode=crop The resizing algorithm/style to apply (crop for smart center crop, pad for padded fit).
quality 1 to 100 ?quality=75 Sets the image compression level (lower means smaller file size).
format webp | jpeg | png ?format=webp Forces on-the-fly image format conversion.

Configuration Options

Option Type Default Description
MaxDimension int 3000 The maximum width or height allowed for a resizing request to avoid DoS attacks.
CacheDuration TimeSpan 12 Hours How long the resized image remains cached on the server disk.
CacheControlHeader string public, max-age=43200 The standard HTTP header sent to client browsers for client-side caching.
Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.1.2 132 7/14/2026
2.1.1 97 7/14/2026
2.1.0 111 7/14/2026
2.0.0 101 7/13/2026
1.1.0 111 7/12/2026
1.0.0 112 7/12/2026