Scarica immagine in C#
-
Scarica l’immagine con la classe
WebClient
inC#
-
Scarica l’immagine senza conoscere il formato con la classe
Bitmap
inC#
-
Scarica l’immagine senza conoscere il formato con la funzione
Image.FromStream()
inC#
Questo tutorial discuterà i metodi per scaricare un’immagine in C#.
Scarica l’immagine con la classe WebClient
in C#
La WebClient
class fornisce funzionalità per inviare e ricevere dati da un URL in C#. La funzione WebClient.DownloadFile(url, path)
scarica un file da un particolare URL url
e lo salva nel path
. Possiamo usare la funzione WebClient.DownloadFile()
per scaricare un’immagine da un URL.
using System;
using System.Net;
using System.Runtime.InteropServices;
namespace download_image {
class Program {
static void download() {
string url =
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Breathe-face-smile.svg/1200px-Breathe-face-smile.svg.png";
using (WebClient client = new WebClient()) {
client.DownloadFile(new Uri(url), "Image.png");
}
}
static void Main(string[] args) {
try {
download();
} catch (ExternalException e) {
Console.WriteLine(e.Message);
} catch (ArgumentNullException e) {
Console.WriteLine(e.Message);
}
}
}
}
Nel codice sopra, abbiamo scaricato un’immagine dall’URL url
e l’abbiamo salvata nel percorso Image.png
con la funzione client.DownloadFile(new Uri(url), "Image.png")
in C#.
Scarica l’immagine senza conoscere il formato con la classe Bitmap
in C#
Nell’esempio sopra, dobbiamo conoscere il formato del file immagine da scaricare; quindi, possiamo scaricarlo dall’URL e salvarlo. Ma, se non conosciamo il formato del file immagine, possiamo usare la classe Bitmap
. La classe Bitmap
fornisce metodi per lavorare con le immagini in C#. Questo metodo scaricherà e salverà i file in tutti i formati che la classe Bitmap
può gestire. La funzione Bitmap.Save(path, format)
scrive il contenuto della nostra bitmap in un file nel path
con il formato format
. La ImageFormat
class può essere utilizzata all’interno della funzione Bitmap.Save()
per specificare manualmente il formato dell’immagine da salvare. Il seguente esempio di codice ci mostra come possiamo scaricare un’immagine da un URL senza conoscere il formato con la funzione Bitmap.Save()
in C#.
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;
namespace download_image {
class Program {
static void SaveImage() {
string url =
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Breathe-face-smile.svg/1200px-Breathe-face-smile.svg.png";
WebClient client = new WebClient();
Stream stream = client.OpenRead(url);
Bitmap bitmap = new Bitmap(stream);
if (bitmap != null) {
bitmap.Save("Image1.png", ImageFormat.Png);
}
stream.Flush();
stream.Close();
client.Dispose();
}
static void Main(string[] args) {
try {
SaveImage();
} catch (ExternalException e) {
Console.WriteLine(e.Message);
} catch (ArgumentNullException e) {
Console.WriteLine(e.Message);
}
}
}
}
Abbiamo definito la funzione SaveImage()
che scarica e salva un’immagine. Abbiamo usato la classe WebClient
per fare richieste web al url
. Abbiamo usato la classe Stream
per leggere i dati dalla funzione client.OpenRead(url)
. Abbiamo usato la classe Bitmap
per convertire il flusso in un formato bitmap. Abbiamo quindi utilizzato la funzione bitmap.Save()
per salvare la bitmap
nel percorso Image1.png
con il formato ImageFormat.Png
.
Scarica l’immagine senza conoscere il formato con la funzione Image.FromStream()
in C#
Possiamo anche fare la stessa cosa dell’esempio precedente con la funzione Image.FromStream()
in C#. La funzione Image.FromStream()
legge un file immagine da un flusso di memoria in C#. Per questo, possiamo prima scaricare tutti i dati dal nostro URL su un array di byte. Quindi, possiamo caricare quell’array in un oggetto della classe MemoryStream
. Possiamo quindi usare la funzione Image.FromStream()
per leggere un’immagine dall’oggetto della classe MemoryStream
. Possiamo quindi salvare questa immagine in un percorso in un formato particolare con la funzione Image.Save(path, format)
in C#. Il seguente esempio di codice ci mostra come scaricare un’immagine da un URL senza conoscerne la formattazione con la funzione Image.FromStream()
in C#.
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;
namespace download_image {
class Program {
static void SaveImage() {
string url =
"https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Breathe-face-smile.svg/1200px-Breathe-face-smile.svg.png";
using (WebClient webClient = new WebClient()) {
byte[] data = webClient.DownloadData(url);
using (MemoryStream mem = new MemoryStream(data)) {
using (var yourImage = Image.FromStream(mem)) {
yourImage.Save("Image2.png", ImageFormat.Png);
}
}
}
}
static void Main(string[] args) {
try {
SaveImage();
} catch (ExternalException e) {
Console.WriteLine(e.Message);
} catch (ArgumentNullException e) {
Console.WriteLine(e.Message);
}
}
}
}
Abbiamo definito la funzione SaveImage()
che scarica e salva un’immagine. Abbiamo utilizzato l’array di byte data
per memorizzare i dati restituiti dalla funzione webClient.DownloadData(url)
. Abbiamo quindi inizializzato un’istanza mem
della classe MemoryStream
con data
. Quindi leggiamo l’immagine yourImage
dal mem
con la funzione Image.FromStream(mem)
. Alla fine, abbiamo salvato l’immagine yourImage
nel percorso Image2.png
con la formattazione ImageFormat.Png
utilizzando la funzione yourImage.Save("Image2.png", ImageFormat.Png)
.
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