Travailler avec les images en C# (.NET) : guide complet

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

Travailler avec les images en C# (.NET) : des bases aux techniques avancées



Le traitement d'images est l'une des tâches clés du développement moderne. Dans l'écosystème C# (.NET), il existe plusieurs bibliothèques puissantes pour travailler avec les graphismes, allant de la bibliothèque intégrée System.Drawing aux solutions multiplateformes modernes comme ImageSharp et SkiaSharp. Dans cet article, nous allons détailler les approches principales, fournir des exemples de code et donner des conseils pratiques.



1. Aperçu des bibliothèques pour le traitement d'images dans .NET



Le choix de la bibliothèque dépend de vos tâches et de votre plateforme. Voici trois options principales :



  • System.Drawing.Common — la bibliothèque classique de Microsoft, disponible dans .NET 6+. Fonctionne via GDI+ sur Windows, mais a des limitations sur Linux/macOS.
  • SixLabors.ImageSharp — une bibliothèque entièrement gérée et multiplateforme. Prend en charge les formats JPEG, PNG, BMP, GIF, WebP. Idéale pour les applications web et le traitement côté serveur.
  • SkiaSharp — un wrapper autour du moteur Skia (utilisé dans Chrome, Flutter). Offre des performances élevées et de vastes possibilités pour les graphismes 2D, y compris le travail avec les images, le texte et les graphismes vectoriels.


Pour la plupart des projets modernes, ImageSharp est recommandé — il est simple d'utilisation, activement développé et indépendant de la plateforme.



2. Installation et connexion des bibliothèques



Installation via NuGet Package Manager (ou .NET CLI) :



// Pour ImageSharpdotnet add package SixLabors.ImageSharp

// Pour SkiaSharpdotnet add package SkiaSharp

// Pour System.Drawing (si nécessaire)dotnet add package System.Drawing.Common


3. Opérations de base avec les images avec ImageSharp



Examinons les opérations principales : chargement, redimensionnement, recadrage, application de filtres et enregistrement.



3.1 Chargement et affichage des informations



using SixLabors.ImageSharp;using SixLabors.ImageSharp.PixelFormats;

using (Image<Rgba32> image = Image.Load<Rgba32>("input.jpg")){ Console.WriteLine($"Largeur : {image.Width}, Hauteur : {image.Height}"); Console.WriteLine($"Format des pixels : {image.PixelType}");}


3.2 Redimensionnement avec conservation des proportions



using SixLabors.ImageSharp.Processing;

using (Image<Rgba32> image = Image.Load<Rgba32>("input.jpg")){ int newWidth = 800; int newHeight = (int)((float)image.Height / image.Width * newWidth);

image.Mutate(x => x.Resize(newWidth, newHeight)); image.Save("output_resized.jpg");}


3.3 Recadrage (crop) de la partie centrale



using (Image<Rgba32> image = Image.Load<Rgba32>("input.jpg")){    int cropSize = Math.Min(image.Width, image.Height);    var rect = new Rectangle(        (image.Width - cropSize) / 2,        (image.Height - cropSize) / 2,        cropSize,        cropSize    );

image.Mutate(x => x.Crop(rect)); image.Save("output_cropped.jpg");}


3.4 Application de filtres (noir et blanc, flou)



using SixLabors.ImageSharp.Processing;using SixLabors.ImageSharp.Processing.Processors.Transforms;

using (Image<Rgba32> image = Image.Load<Rgba32>("input.jpg")){ // Filtre noir et blanc image.Mutate(x => x.Grayscale());

// Flou gaussien (rayon 5) image.Mutate(x => x.GaussianBlur(5));

image.Save("output_filtered.jpg");}


4. Travail avec les formats et la qualité



ImageSharp permet de définir des paramètres d'enregistrement pour chaque format :



using SixLabors.ImageSharp.Formats.Jpeg;

using (Image<Rgba32> image = Image.Load<Rgba32>("input.jpg")){ var encoder = new J

Recommendations