Travail avec les images en C# (.NET) : aperçu des bibliothèques et exemples pratiques
Le traitement d'images est l'une des tâches clés lors de la création d'applications web modernes, de programmes de bureau et de services mobiles. Dans l'écosystème C# (.NET), il existe plusieurs bibliothèques puissantes permettant de charger, éditer, analyser et enregistrer des images. Dans cet article, nous examinerons les principales approches : de la classique System.Drawing aux solutions multiplateformes modernes ImageSharp et SkiaSharp.
1. System.Drawing.Common — le classique .NET
La bibliothèque System.Drawing.Common est disponible dans .NET Core/.NET 5+ en tant que package NuGet. Elle fournit une API familière pour travailler avec des images matricielles (BMP, JPEG, PNG, GIF, TIFF).
Important : sur Linux et macOS, elle nécessite l'installation de la bibliothèque libgdiplus.
Installation
dotnet add package System.Drawing.CommonExemple : chargement, redimensionnement et enregistrement
using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;
public class ImageProcessor{ public void ResizeImage(string inputPath, string outputPath, int maxWidth, int maxHeight) { using var original = Image.FromFile(inputPath); var ratio = Math.Min((double)maxWidth / original.Width, (double)maxHeight / original.Height); int newWidth = (int)(original.Width * ratio); int newHeight = (int)(original.Height * ratio);
using var bitmap = new Bitmap(newWidth, newHeight); using var graphics = Graphics.FromImage(bitmap); graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.DrawImage(original, 0, 0, newWidth, newHeight);
bitmap.Save(outputPath, ImageFormat.Jpeg); }}2. ImageSharp (SixLabors) — une bibliothèque multiplateforme moderne
SixLabors.ImageSharp est une bibliothèque purement managée sans dépendances aux composants natifs. Idéale pour les applications serveur, les services web et les fonctions cloud. Elle prend en charge les formats avancés (WebP, HEIF, AVIF) et le traitement avancé.
Installation
dotnet add package SixLabors.ImageSharpExemple : ajout d'un filigrane
using SixLabors.ImageSharp;using SixLabors.ImageSharp.Drawing.Processing;using SixLabors.ImageSharp.Processing;using SixLabors.Fonts;
public async Task AddWatermarkAsync(string inputPath, string outputPath, string watermarkText){ using var image = await Image.LoadAsync(inputPath); var font = SystemFonts.CreateFont("Arial", 48, FontStyle.Bold);
image.Mutate(ctx => { ctx.DrawText(watermarkText, font, Color.White, new PointF(50, 50)); });
await image.SaveAsync(outputPath);}3. SkiaSharp — le moteur graphique de Google
SkiaSharp est un wrapper autour de la bibliothèque Skia (utilisée dans Chrome, Flutter, Android). Il offre des performances élevées, un accès bas niveau aux pixels et la prise en charge de transformations vectorielles complexes.
Installation
dotnet add package SkiaSharpExemple : application d'un filtre de flou (Blur)
using SkiaSharp;
public void ApplyBlur(string inputPath, string outputPath, float sigma){ using var inputStream = File.OpenRead(inputPath); using var original = SKBitmap.Decode(inputStream); using var surface = new SKCanvas(original);
var paint = new SKPaint { ImageFilter = SKImageFilter.CreateBlur(sigma, sigma) }; surface.DrawBitmap(original, 0, 0, paint);
using var image = SKImage.FromBitmap(original); using var data = image.Encode(SKEncodedImageFormat.Jpeg, 90); using var outputStream = File.OpenWrite(outputPath); data.SaveTo(outputStream);\ Aussi dans la bibliothèque
GraphQL en Swift : Guide complet de la bibliothèque Apollo iOS
ORM pour PHP : comparaison de Doctrine, Eloquent et Cycle — exemples de code
Parsing HTML en Java : Jsoup, HtmlUnit et autres outils
Detekt pour Kotlin : guide complet avec exemples
Validation des données en Kotlin : bibliothèques et approches