Ridimensionare un'immagine in C#
-
Ridimensionare un’immagine con la classe
Bitmap
inC#
-
Ridimensionare un’immagine con la funzione
Graphics.DrawImage()
inC#
- Conclusion
In questo tutorial, discuteremo dei metodi per ridimensionare un’immagine in C#.
Ti guideremo nell’intero processo, dal caricamento dell’immagine originale al salvataggio della versione ridimensionata.
Ridimensionare un’immagine con la classe Bitmap
in C#
La classe Bitmap
fornisce molti metodi per lavorare con le immagini in C#. La classe Bitmap
ottiene i dati dei pixel delle immagini. Possiamo ridimensionare un’immagine inizializzando il parametro Size
all’interno del costruttore della classe Bitmap
.
Il seguente esempio di codice ci mostra come possiamo ridimensionare un’immagine con il costruttore della classe Bitmap
in 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));
}
}
}
Questo codice mostra il processo completo di ridimensionamento di un’immagine utilizzando la classe Bitmap
in C#. Vediamo come funziona.
Passo 1: Caricare l’immagine originale
Prima di tutto, è necessario caricare l’immagine originale utilizzando il metodo Image.FromFile
. Assicurati di sostituire "C:\\Images\\img1.jpg"
con il percorso del tuo file immagine.
string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
Passo 2: Convertire l’immagine in un oggetto Bitmap
Successivamente, converti l’immagine caricata in un oggetto Bitmap
. Questo passaggio è necessario per eseguire l’operazione di ridimensionamento.
Bitmap imgBitmap = new Bitmap(img);
Passo 3: Ridimensionare l’immagine
Ora viene la parte del ridimensionamento. La funzione ResizeImage
prende l’oggetto Bitmap
e la dimensione desiderata (new Size(200, 200)
) e restituisce l’immagine ridimensionata.
Image resizedImage = ResizeImage(imgBitmap, new Size(200, 200));
Passo 4: Salvare l’immagine ridimensionata
Infine, puoi salvare l’immagine ridimensionata su un file utilizzando il metodo Save
. In questo esempio, l’immagine ridimensionata viene salvata come "resized.jpg"
. Puoi scegliere il formato dell’immagine salvata modificando l’estensione del file (ad esempio, .jpg
, .png
, .bmp
).
resizedImage.Save("resized.jpg");
Ridimensionare un’immagine con la funzione Graphics.DrawImage()
in C#
La funzione Graphics.DrawImage()
disegna un’immagine all’interno di una posizione e dimensioni specificate in C#. Con questo metodo, possiamo eliminare molti inconvenienti del ridimensionamento di un’immagine. Il seguente esempio di codice ci mostra come possiamo ridimensionare un’immagine con la funzione Graphics.DrawImage()
in 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));
}
}
}
Vediamo come funziona.
Passo 1: Caricare l’immagine originale
Prima di tutto, è necessario caricare l’immagine originale utilizzando Image.FromFile
. Assicurati di sostituire "C:\\Images\\img1.jpg"
con il percorso del tuo file immagine.
string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
Passo 2: Creare un oggetto Bitmap di destinazione
Crea un oggetto Bitmap
di destinazione che conterrà l’immagine ridimensionata. Imposta la sua risoluzione per corrispondere all’immagine originale utilizzando SetResolution
.
La funzione destinationImage.SetResolution()
mantiene il dpi dell’immagine indipendentemente dalla sua dimensione effettiva.
var destinationRect = new Rectangle(0, 0, width, height);
var destinationImage = new Bitmap(width, height);
destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
Passaggio 3: Ridimensionare l’immagine
Ora, utilizziamo Graphics.FromImage
per ottenere un oggetto Graphics
associato al Bitmap
di destinazione. Impostiamo la modalità di composizione e la qualità per ottenere i migliori risultati.
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 proprietà graphics.CompositingMode = CompositingMode.SourceCopy
specifica che quando un colore viene reso, sovrascrive il colore di sfondo.
La proprietà graphics.CompositingQuality = CompositingQuality.HighQuality
indica che desideriamo solo immagini di alta qualità.
La funzione wrapMode.SetWrapMode(WrapMode.TileFlipXY)
impedisce la formazione di aloni attorno ai bordi dell’immagine.
Passaggio 4: Salva l’immagine ridimensionata
Infine, puoi salvare l’immagine ridimensionata su un file utilizzando il metodo Save
. In questo esempio, l’immagine ridimensionata viene salvata come "resized.jpg"
. Puoi scegliere il formato dell’immagine salvata cambiando l’estensione del file (ad esempio, .jpg
, .png
, .bmp
).
resizedImage.Save("resized.jpg");
Conclusion
Il ridimensionamento delle immagini è un’operazione comune nello sviluppo di software e C# offre diverse approcci per realizzarlo. In questo articolo, ci siamo concentrati sul ridimensionamento delle immagini utilizzando la classe Bitmap
. Abbiamo seguito l’intero processo, dal caricamento dell’immagine originale al salvataggio della versione ridimensionata.
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