SharpPixel.AspNetCore.ImageResizer 2.1.2

dotnet add package SharpPixel.AspNetCore.ImageResizer --version 2.1.2
                    
NuGet\Install-Package SharpPixel.AspNetCore.ImageResizer -Version 2.1.2
                    
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.1.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SharpPixel.AspNetCore.ImageResizer" Version="2.1.2" />
                    
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.1.2
                    
#r "nuget: SharpPixel.AspNetCore.ImageResizer, 2.1.2"
                    
#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.1.2
                    
#: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.1.2
                    
Install as a Cake Addin
#tool nuget:?package=SharpPixel.AspNetCore.ImageResizer&version=2.1.2
                    
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 lightning-fast, native image manipulation.
  • DoS Protection: Enforces safety ceilings on dimensions to prevent server resource exhaustion.
  • Smart Two-Layer Cache: Combines fast IMemoryCache with a persistent Disk Cache to offload CPU and RAM.
  • Throttled Midnight Cleaner: An automated background worker (HostedService) that wakes up at a user-defined hour (e.g., 3 AM) to clean expired files without locking your disk or affecting active users.
  • Custom Pad Color: Seamlessly fill empty spaces in pad mode using standard HEX codes (e.g., bg=ff0000).
  • Next-Gen Formats: Convert legacy images to modern WebP on-the-fly to boost your SEO and load speed.

📦 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);

// Register services with production-ready configurations
builder.Services.AddImageResizer(options =>
{
    options.MaxDimension = 3000;                          // Safety ceiling for width/height (DoS Protection)
    options.CacheDuration = TimeSpan.FromDays(7);         // Server-side cache lifetime
    options.CacheControlHeader = "public, max-age=604800"; // Browser-side cache header (7 Days)
    options.CacheFolderName = "_imagecache";              // Directory name inside wwwroot/ContentRoot
    
    // Smart Background Midnight Cleaner Settings
    options.EnableBackgroundCleanup = true;               // Enable automated disk cleanup
    options.ExecutionHour = 3;                            // Wake up precisely at 3:00 AM
    options.UseUtcTime = true;                            // Use UTC time instead of Server Local Time
    options.CleanupBatchSize = 50;                        // Process files in small safe chunks
    options.CleanupThrottleDelayMs = 100;                 // Rest for 100ms after each batch to prevent Disk I/O spikes
});

var app = builder.Build();

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

app.UseStaticFiles();

app.MapGet("/", () => "Image Resizer Middleware is active and optimized! ⚡");

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 with Custom Background (mode=pad & bg)
<img src="/images/product.jpg?w=800&h=600&mode=pad&bg=e0e0e0" 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.

⭐ Support the Project

If you find this package useful, please consider giving it a Star on GitHub! It helps the project grow and motivates further development.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  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 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