Redimensionner une image en C#

Muhammad Maisam Abbas 16 février 2024
  1. Redimensionner une image avec la classe Bitmap en C#
  2. Redimensionner une image avec la fonction Graphics.DrawImage() en C#
  3. Conclusion
Redimensionner une image en C#

Dans ce tutoriel, nous discuterons des méthodes pour redimensionner une image en C#.

Nous vous guiderons à travers tout le processus, de la chargement de l’image d’origine à l’enregistrement de la version redimensionnée.

Redimensionner une image avec la classe Bitmap en C#

La classe Bitmap propose de nombreuses méthodes pour travailler avec des images en C#. La classe Bitmap récupère les données de pixels des images. Nous pouvons redimensionner une image en initialisant le paramètre Size à l’intérieur du constructeur de la classe Bitmap.

L’exemple de code suivant montre comment redimensionner une image avec le constructeur de la classe Bitmap en C#.

using System;
using System.Drawing;
namespace resize_image {
  class Program {
    public static Image resizeImage(Image imgToResize, Size size) {
      return (Image)(new Bitmap(imgToResize, size));
    }
    static void Main(string[] args) {
      string path = "C:\\Images\\img1.jpg";
      Image img = Image.FromFile(path);
      Bitmap imgbitmap = new Bitmap(img);
      Image resizedImage = resizeImage(imgbitmap, new Size(200, 200));
    }
  }
}

Ce code montre le processus complet de redimensionnement d’une image en utilisant la classe Bitmap en C#. Analysons comment cela fonctionne.

Étape 1 : Charger l’image d’origine

Tout d’abord, vous devez charger l’image d’origine en utilisant la méthode Image.FromFile. Assurez-vous de remplacer "C:\\Images\\img1.jpg" par le chemin d’accès à votre propre fichier image.

string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);

Étape 2 : Convertir l’image en Bitmap

Ensuite, vous convertissez l’image chargée en objet Bitmap. Cette étape est nécessaire pour effectuer l’opération de redimensionnement.

Bitmap imgBitmap = new Bitmap(img);

Étape 3 : Redimensionner l’image

Maintenant, passons à la partie de redimensionnement. La fonction ResizeImage prend l’objet Bitmap et la taille souhaitée (new Size(200, 200)) et retourne l’image redimensionnée.

Image resizedImage = ResizeImage(imgBitmap, new Size(200, 200));

Étape 4 : Enregistrer l’image redimensionnée

Enfin, vous pouvez enregistrer l’image redimensionnée dans un fichier en utilisant la méthode Save. Dans cet exemple, l’image redimensionnée est enregistrée sous le nom "resized.jpg". Vous pouvez choisir le format de l’image en modifiant l’extension du fichier (par exemple, .jpg, .png, .bmp).

resizedImage.Save("resized.jpg");

Redimensionner une image avec la fonction Graphics.DrawImage() en C#

La fonction Graphics.DrawImage() dessine une image à l’intérieur d’un emplacement spécifié avec des dimensions spécifiées en C#. Avec cette méthode, nous pouvons éliminer de nombreux inconvénients du redimensionnement d’une image. L’exemple de code suivant montre comment redimensionner une image avec la fonction Graphics.DrawImage() en C#.

using System;
using System.Drawing;
namespace resize_image {
  class Program {
    public static Image resizeImage(Image image, int width, int height) {
      var destinationRect = new Rectangle(0, 0, width, height);
      var destinationImage = new Bitmap(width, height);

      destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);

      using (var graphics = Graphics.FromImage(destinationImage)) {
        graphics.CompositingMode = CompositingMode.SourceCopy;
        graphics.CompositingQuality = CompositingQuality.HighQuality;

        using (var wrapMode = new ImageAttributes()) {
          wrapMode.SetWrapMode(WrapMode.TileFlipXY);
          graphics.DrawImage(image, destinationRect, 0, 0, image.Width, image.Height,
                             GraphicsUnit.Pixel, wrapMode);
        }
      }

      return (Image)destinationImage;
    }
    static void Main(string[] args) {
      string path = "C:\\Images\\img1.jpg";
      Image img = Image.FromFile(path);
      Bitmap imgbitmap = new Bitmap(img);
      Image resizedImage = resizeImage(imgbitmap, new Size(200, 200));
    }
  }
}

Analysons comment cela fonctionne.

Étape 1 : Charger l’image d’origine

Tout d’abord, vous devez charger l’image d’origine en utilisant Image.FromFile. Assurez-vous de remplacer "C:\\Images\\img1.jpg" par le chemin d’accès à votre propre fichier image.

string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);

Étape 2 : Créer un Bitmap de destination

Créez un objet Bitmap de destination qui contiendra l’image redimensionnée. Définissez sa résolution pour correspondre à celle de l’image d’origine en utilisant SetResolution.

La fonction destinationImage.SetResolution() permet de conserver la résolution en dpi de l’image indépendamment de sa taille réelle.

var destinationRect = new Rectangle(0, 0, width, height);
var destinationImage = new Bitmap(width, height);

destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);

Étape 3 : Redimensionner l’image

Maintenant, nous utilisons Graphics.FromImage pour obtenir un objet Graphics associé au Bitmap de destination. Nous définissons le mode de composition et la qualité pour obtenir les meilleurs résultats.

using (var graphics = Graphics.FromImage(destinationImage)) {
  graphics.CompositingMode = CompositingMode.SourceCopy;
  graphics.CompositingQuality = CompositingQuality.HighQuality;

  using (var wrapMode = new ImageAttributes()) {
    wrapMode.SetWrapMode(WrapMode.TileFlipXY);
    graphics.DrawImage(image, destinationRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel,
                       wrapMode);
  }
}

La propriété graphics.CompositingMode = CompositingMode.SourceCopy spécifie que lorsqu’une couleur est rendue, elle écrase la couleur de fond.

La propriété graphics.CompositingQuality = CompositingQuality.HighQuality spécifie que nous souhaitons uniquement un rendu d’image de haute qualité.

La fonction wrapMode.SetWrapMode(WrapMode.TileFlipXY) empêche l’apparition d’effets fantômes autour des bordures de l’image.

Étape 4 : Enregistrer l’image redimensionnée

Enfin, vous pouvez enregistrer l’image redimensionnée dans un fichier en utilisant la méthode Save. Dans cet exemple, l’image redimensionnée est enregistrée sous le nom "resized.jpg". Vous pouvez choisir le format de l’image en modifiant l’extension du fichier (par exemple, .jpg, .png, .bmp).

resizedImage.Save("resized.jpg");

Conclusion

Le redimensionnement d’images est une tâche courante en développement logiciel, et C# offre plusieurs approches pour y parvenir. Dans cet article, nous nous sommes concentrés sur le redimensionnement d’images en utilisant la classe Bitmap. Nous avons parcouru l’ensemble du processus, du chargement de l’image d’origine à l’enregistrement de la version redimensionnée.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Article connexe - Csharp Image