Redimensionner une image en C#
-
Redimensionner une image avec la classe
Bitmap
enC#
-
Redimensionner une image avec la fonction
Graphics.DrawImage()
enC#
- Conclusion
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.
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