Bild herunterladen in C#
-
Herunterladen von Bildern mit der Klasse
WebClient
inC#
-
Laden Sie das Bild herunter, ohne das Format mit der Klasse
Bitmap
in C# zu kennen -
Herunterladen von Bildern ohne Kenntnis des Formats mit der Funktion
Image.FromStream()
inC#
In diesem Tutorial werden die Methoden zum Herunterladen eines Bildes in C# erläutert.
Herunterladen von Bildern mit der Klasse WebClient
in C#
Die Klasse WebClient
bietet Funktionen zum Senden und Empfangen von Daten an eine URL in C#. Die Funktion WebClient.DownloadFile(url, path)
lädt eine Datei von einer bestimmten URL url
herunter und speichert sie im path
. Mit der Funktion WebClient.DownloadFile()
können wir ein Bild von einer URL herunterladen.
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);
}
}
}
}
Im obigen Code haben wir ein Bild von der URL url
heruntergeladen und es mit der Funktion client.DownloadFile(new Uri(url), "Image.png")
in C# im Pfad Image.png
gespeichert.
Laden Sie das Bild herunter, ohne das Format mit der Klasse Bitmap
in C# zu kennen
Im obigen Beispiel müssen wir das herunterzuladende Bilddateiformat kennen. Dann können wir es von der URL herunterladen und speichern. Wenn wir das Bilddateiformat jedoch nicht kennen, können wir die Klasse Bitmap
verwenden. Die Klasse Bitmap
bietet Methoden zum Arbeiten mit Bildern in C#. Diese Methode lädt Dateien in allen Formaten herunter und speichert sie, die die Klasse Bitmap
verarbeiten kann. Die Funktion Bitmap.Save(path, format)
schreibt den Inhalt unserer Bitmap in eine Datei im path
mit dem Format format
. Die Klasse ImageFormat
kann in der Funktion Bitmap.Save()
verwendet werden, um das Format des zu speichernden Bildes manuell anzugeben. Das folgende Codebeispiel zeigt uns, wie wir ein Bild von einer URL herunterladen können, ohne das Format mit der Funktion Bitmap.Save()
in C# zu kennen.
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);
}
}
}
}
Wir haben die Funktion SaveImage()
definiert, mit der ein Bild heruntergeladen und gespeichert wird. Wir haben die Klasse WebClient
verwendet, um Webanfragen an die url
zu stellen. Wir haben die Klasse Stream
verwendet, um die Daten aus der Funktion client.OpenRead(url)
zu lesen. Wir haben die Klasse Bitmap
verwendet, um den Stream in ein Bitmap-Format zu konvertieren. Wir haben dann die Funktion bitmap.Save()
verwendet, um die Bitmap
im Pfad Image1.png
im Format ImageFormat.Png
zu speichern.
Herunterladen von Bildern ohne Kenntnis des Formats mit der Funktion Image.FromStream()
in C#
Mit der Funktion Image.FromStream()
in C# können wir dasselbe wie im vorherigen Beispiel tun. Die Funktion Image.FromStream()
liest eine Bilddatei aus einem Speicherstrom in C#. Dazu können wir zunächst alle Daten von unserer URL in ein Array von Bytes herunterladen. Dann können wir dieses Array in ein Objekt der Klasse MemoryStream
laden. Mit der Funktion Image.FromStream()
können wir dann ein Bild aus dem Objekt der Klasse MemoryStream
lesen. Wir können dieses Bild dann mit der Funktion Image.Save(path, format)
in C# in einem Pfad in einem bestimmten Format speichern. Das folgende Codebeispiel zeigt, wie Sie ein Bild von einer URL herunterladen, ohne die Formatierung mit der Funktion Image.FromStream()
in C# zu kennen.
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);
}
}
}
}
Wir haben die Funktion SaveImage()
definiert, mit der ein Bild heruntergeladen und gespeichert wird. Wir haben das Bytearray data
verwendet, um die von der Funktion webClient.DownloadData(url)
zurückgegebenen Daten zu speichern. Wir haben dann eine Instanz mem
der Klasse MemoryStream
mit data
initialisiert. Wir lesen dann das Bild yourImage
aus dem mem
mit der Funktion Image.FromStream(mem)
. Am Ende haben wir das Bild yourImage
mit der Formatierung ImageFormat.Png
im Pfad Image2.png
gespeichert, indem wir die Funktion yourImage.Save("Image2.png", ImageFormat.Png)
verwendet haben.
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