Traitement d'images en C# (.NET) : bibliothèques et exemples de code

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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.Common


Exemple : 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.ImageSharp


Exemple : 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 SkiaSharp


Exemple : 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);\

Recommendations