DotNetBrightener.UploadService.ImageOptimizer
2026.0.1-preview-notification-service-696
See the version list below for details.
dotnet add package DotNetBrightener.UploadService.ImageOptimizer --version 2026.0.1-preview-notification-service-696
NuGet\Install-Package DotNetBrightener.UploadService.ImageOptimizer -Version 2026.0.1-preview-notification-service-696
<PackageReference Include="DotNetBrightener.UploadService.ImageOptimizer" Version="2026.0.1-preview-notification-service-696" />
<PackageVersion Include="DotNetBrightener.UploadService.ImageOptimizer" Version="2026.0.1-preview-notification-service-696" />
<PackageReference Include="DotNetBrightener.UploadService.ImageOptimizer" />
paket add DotNetBrightener.UploadService.ImageOptimizer --version 2026.0.1-preview-notification-service-696
#r "nuget: DotNetBrightener.UploadService.ImageOptimizer, 2026.0.1-preview-notification-service-696"
#:package DotNetBrightener.UploadService.ImageOptimizer@2026.0.1-preview-notification-service-696
#addin nuget:?package=DotNetBrightener.UploadService.ImageOptimizer&version=2026.0.1-preview-notification-service-696&prerelease
#tool nuget:?package=DotNetBrightener.UploadService.ImageOptimizer&version=2026.0.1-preview-notification-service-696&prerelease
DotNetBrightener.UploadService.ImageOptimizer
Image optimization and resizing functionality for DotNetBrightener Upload Service.
๐ Migration Notice - Version 2026.0.1+
Version 2026.0.1+ has migrated from Magick.NET to SkiaSharp due to security vulnerability CVE-2025-65955.
Security Details
- Vulnerability: CVE-2025-65955 (CVSS 4.9/10 - Moderate)
- Affected Package: Magick.NET v14.9.1
- Issue: Use-after-free/double-free in ImageMagick's Magick++ layer
- Resolution: Migrated to SkiaSharp (Microsoft-backed, actively maintained)
๐ Breaking Changes
Old Method (Deprecated)
services.AddUploadService(config)
.UseImageMagickOptimizer(); // โ ๏ธ Deprecated - shows warning
New Method (Recommended)
services.AddUploadService(config)
.UseSkiaSharpOptimizer(); // โ
Use this instead
โจ Benefits of SkiaSharp
- โ No security vulnerabilities - Actively maintained by Microsoft
- โ Better cross-platform support - Windows, Linux, macOS, iOS, Android
- โ High performance - Native Skia graphics engine
- โ Modern .NET API - Designed for .NET Core and beyond
- โ Comprehensive graphics features - More than just image resizing
๐ฆ Installation
dotnet add package DotNetBrightener.UploadService.ImageOptimizer
๐ Usage
Basic Setup
using Microsoft.Extensions.DependencyInjection;
// In your Startup.cs or Program.cs
services.AddUploadService(configuration)
.UseSkiaSharpOptimizer();
Advanced Configuration
services.AddUploadService(configuration)
.UseSkiaSharpOptimizer()
.ConfigureUploadOptions(options =>
{
options.MaxFileSize = 10 * 1024 * 1024; // 10MB
options.AllowedFileExtensions = new[] { ".jpg", ".jpeg", ".png", ".gif", ".webp" };
});
๐ Migration Guide
Step 1: Update Package Reference
No changes needed if using centralized package management. The package will automatically use SkiaSharp.
Step 2: Update Code
Before:
services.AddUploadService(config)
.UseImageMagickOptimizer();
After:
services.AddUploadService(config)
.UseSkiaSharpOptimizer();
Step 3: Test Your Application
- Build your application
- Run unit tests
- Test image upload and resize functionality
- Verify image quality meets your requirements
Backward Compatibility
The old UseImageMagickOptimizer() method still works but:
- Shows an
[Obsolete]warning during compilation - Internally redirects to
UseSkiaSharpOptimizer() - Will be removed in the next major version
๐ Supported Image Formats
SkiaSharp supports the following image formats:
- PNG (default output format)
- JPEG / JPG
- GIF (including animated)
- WebP
- BMP
- ICO
- WBMP
๐ ๏ธ API Reference
SkiaSharpImageOptimizer
public class SkiaSharpImageOptimizer : IImageResizer
{
/// <summary>
/// Resizes an image from the input stream to the specified dimensions
/// </summary>
/// <param name="inputStream">The input image stream</param>
/// <param name="newWidth">The target width (absolute value will be used)</param>
/// <param name="newHeight">The target height (absolute value will be used)</param>
/// <returns>A new stream containing the resized image in PNG format</returns>
Stream ResizeImageFromStream(Stream inputStream, int newWidth, int newHeight);
}
Extension Methods
// Recommended method
public static UploadServiceConfigurationBuilder UseSkiaSharpOptimizer(
this UploadServiceConfigurationBuilder builder);
// Deprecated method (backward compatibility)
[Obsolete("Use UseSkiaSharpOptimizer instead")]
public static UploadServiceConfigurationBuilder UseImageMagickOptimizer(
this UploadServiceConfigurationBuilder builder);
๐งช Testing
The package includes comprehensive unit tests:
- Valid image resizing
- Negative dimension handling (converts to absolute values)
- Invalid stream handling
- Various dimension scenarios
- Large image handling
- Output format verification (PNG)
To run tests:
cd src/UploadService/DotNetBrightener.UploadService.ImageOptimizer.Tests
dotnet test
๐ Performance
SkiaSharp provides excellent performance characteristics:
- High-quality resizing with
SKFilterQuality.High - Native code execution via Skia engine
- Efficient memory usage with proper disposal patterns
- Cross-platform optimization for each OS
๐ Troubleshooting
"Failed to decode image from input stream"
Cause: The input stream doesn't contain a valid image or format is not supported.
Solution: Verify the input stream contains valid image data and is in a supported format.
"Failed to resize image"
Cause: Invalid target dimensions or corrupted source image.
Solution: Ensure width and height are positive integers and source image is valid.
๐ Dependencies
- SkiaSharp (3.119.1 or later) - Main graphics library
- Microsoft.AspNetCore.App - Framework reference
- DotNetBrightener.SimpleUploadService - Upload service abstractions
๐ License
This package is part of the DotNetBrightener Framework.
ยฉ 2017 - 2025 Vampire Coder (formerly DotNet Brightener)
๐ Support
For issues, questions, or contributions:
- GitHub Repository: https://github.com/dotnetbrightener/dotnet-brightener-framework
- Issues: https://github.com/dotnetbrightener/dotnet-brightener-framework/issues
๐ Additional Resources
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- DotNetBrightener.SimpleUploadService (>= 2026.0.1-preview-notification-service-696)
- SkiaSharp (>= 3.119.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.