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 courantes dans les applications modernes en C# (.NET). Que ce soit pour charger un avatar utilisateur, créer des miniatures, ajouter des filigranes ou convertir des formats, .NET propose plusieurs solutions puissantes. Dans cet article, nous examinerons les principales bibliothèques, leurs capacités et écrirons des exemples de code concrets.
1. Bibliothèque standard : System.Drawing.Common
Historiquement la première et la plus connue est System.Drawing.Common. Elle donne accès à GDI+ (Graphics Device Interface) de Windows. Cependant, elle présente des limitations importantes :
- Fonctionne uniquement sous Windows (pour .NET Core/.NET 5+, le package
System.Drawing.Commonest nécessaire, mais la prise en charge sur Linux/macOS est limitée). - Non optimisée pour les services web à forte charge (fuites mémoire en cas d'utilisation incorrecte).
- Ne prend pas en charge les formats modernes (WebP, AVIF) "prêts à l'emploi".
Exemple de chargement et de redimensionnement d'image :
using System.Drawing;using System.Drawing.Imaging;
public static void ResizeImage(string sourcePath, string destPath, int newWidth, int newHeight){ using (var image = Image.FromFile(sourcePath)) using (var resized = new Bitmap(newWidth, newHeight)) using (var graphics = Graphics.FromImage(resized)) { graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; graphics.DrawImage(image, 0, 0, newWidth, newHeight); resized.Save(destPath, ImageFormat.Jpeg); }}Ce code charge l'image source, crée un nouveau Bitmap avec les dimensions spécifiées et y dessine l'original avec une haute qualité. Convient pour les tâches simples.
2. Bibliothèque moderne multiplateforme : ImageSharp (SixLabors)
ImageSharp est une bibliothèque entièrement gérée pour .NET, indépendante de GDI+. Elle fonctionne sous Windows, Linux et macOS. Principaux avantages :
- Code C# pur, sans dépendances natives.
- Prise en charge de WebP, PNG, JPEG, BMP, GIF, TIFF.
- Filtres intégrés, rotations, recadrage, redimensionnement.
- Haute performance et sécurité pour les applications web.
Installation : dotnet add package SixLabors.ImageSharp
Exemple de redimensionnement et sauvegarde en WebP :
using SixLabors.ImageSharp;using SixLabors.ImageSharp.Processing;using SixLabors.ImageSharp.Formats.Webp;
public static void ResizeToWebp(string input, string output, int width, int height){ using (var image = Image.Load(input)) { image.Mutate(x => x.Resize(width, height)); var encoder = new WebpEncoder { Quality = 80 }; image.Save(output, encoder); }}Remarque : la méthode Mutate applique les modifications directement à l'image (sans créer de copie), ce qui économise de la mémoire.
3. Moteur graphique : SkiaSharp
SkiaSharp est un wrapper autour de la bibliothèque Skia (utilisée dans Chrome, Android, Flutter). Elle offre une flexibilité et des performances maximales, en particulier pour les graphiques 2D complexes.
- Multiplateforme (Windows, Linux, macOS, plateformes mobiles).
- Prise en charge de l'accélération matérielle (GPU).
- Ensemble d'outils riche : chemins, pinceaux, shaders, masques.
Exemple d'ajout de filigrane :
using SkiaSharp;
public static void AddWatermark(string imagePath, string watermarkText, string outputPath){ using (var input = SKBitmap.Decode(imagePath)) using (var canvas = new SKCanvas(input)) using (var paint = new SKPaint { Color = SKColors.White.WithAlpha(128), TextSize = Aussi dans la bibliothèque
Lottie Android Kotlin : guide complet avec exemples
Travailler avec Excel en Rust : bibliothèques et exemples de code
Clap pour Rust : guide complet avec exemples
Frameworks CLI pour Kotlin : Clikt, kotlinx-cli, picocli — aperçu et comparaison
Travail avec les images en TypeScript : bibliothèques, outils et exemples de code