Travailler avec des images en C# (.NET) : redimensionnement et recadrage (resize, crop)
Dans le développement web moderne et la création d'applications de bureau, il est souvent nécessaire de traiter des images par programmation : les redimensionner (resize) pour des aperçus, les recadrer (crop) pour supprimer les bords inutiles ou les adapter à un format spécifique. La plateforme .NET propose plusieurs approches pour résoudre ces tâches. Dans cet article, nous allons détailler l'utilisation de la bibliothèque SixLabors.ImageSharp — un outil puissant et multiplateforme pour le traitement d'images en C#.
Pourquoi ImageSharp ?
Auparavant, la solution standard était la bibliothèque System.Drawing, mais elle présente des limitations : elle fonctionne uniquement sous Windows, nécessite des composants GDI+ installés et n'est pas optimisée pour les applications web modernes. ImageSharp ne présente pas ces inconvénients :
- Entièrement écrite en code managé C#.
- Fonctionne sous Windows, Linux, macOS.
- Prend en charge les formats populaires : JPEG, PNG, BMP, GIF, WebP.
- Haute performance et sécurité.
Installation de la bibliothèque
Pour commencer, créez un nouveau projet C# (.NET 6+) et installez le package via NuGet :
dotnet add package SixLabors.ImageSharpOu via le gestionnaire de packages Visual Studio : Install-Package SixLabors.ImageSharp.
Redimensionnement d'image (Resize)
La fonction resize permet de réduire ou d'agrandir une image, en conservant les proportions ou en définissant des dimensions exactes. Voici un exemple où nous chargeons une image et la réduisons à une largeur de 300 pixels, en ajustant automatiquement la hauteur :
using SixLabors.ImageSharp;using SixLabors.ImageSharp.Processing;
// Chargement de l'image sourceusing (Image image = Image.Load("input.jpg")){ // Redimensionnement : largeur 300, hauteur calculée automatiquement image.Mutate(x => x.Resize(300, 0));
// Sauvegarde du résultat image.Save("output_resize.jpg");}En utilisant 0 comme deuxième paramètre, nous indiquons que la hauteur doit être calculée automatiquement pour conserver les proportions. Si vous souhaitez définir des dimensions exactes (par exemple, 300x200), spécifiez les deux valeurs :
image.Mutate(x => x.Resize(300, 200)); // Possibilité de distorsion des proportionsPour conserver les proportions avec une taille exacte, utilisez le mode ResizeMode.Pad ou ResizeMode.Crop :
image.Mutate(x => x.Resize(new ResizeOptions{ Size = new Size(300, 200), Mode = ResizeMode.Crop // Recadre les bords pour s'adapter à la taille}));Recadrage d'image (Crop)
Le recadrage (crop) permet de découper une zone rectangulaire dans l'image source. Cela est utile pour créer des avatars, des miniatures ou supprimer les marges vides. Exemple — découpage d'une zone centrale de 200x150 pixels :
using (Image image = Image.Load("input.jpg")){ // Définition des coordonnées et de la taille de la zone à recadrer Rectangle cropRect = new Rectangle( x: (image.Width - 200) / 2, // Centrage horizontal y: (image.Height - 150) / 2, // Centrage vertical width: 200, height: 150 );
// Exécution du recadrage image.Mutate(x => x.Crop(cropRect));
// Sauvegarde du résultat image.Save("output_crop.jpg");}Si vous souhaitez recadrer manuellement l'image (par exemple, le coin supérieur gauche 100x100) :
image.Mutate(x => x.Crop(new Rectangle(0, 0, 100, 100)));Combinaison d'opérations : resize + crop
Il est souvent nécessaire de d'abord redimensionner, puis de recadrer pour obtenir le format souhaité. ImageSharp permet de chaîner les opérations :
using (Image image = Image.Load("input.jpg")){ // Étape 1 : réduire à une largeur de 400 pixels (proportionnellement) image.Mutate(x => Aussi dans la bibliothèque
Journalisation pour JavaScript (Node.js) : meilleures solutions et bibliothèques
Traitement d'images en Java : bibliothèques et exemples de code
Client HTTP pour JavaScript (Node.js) : top bibliothèques 2025