Bild herunterladen in C#

Muhammad Maisam Abbas 16 Februar 2024
  1. Herunterladen von Bildern mit der Klasse WebClient in C#
  2. Laden Sie das Bild herunter, ohne das Format mit der Klasse Bitmap in C# zu kennen
  3. Herunterladen von Bildern ohne Kenntnis des Formats mit der Funktion Image.FromStream() in C#
Bild herunterladen in C#

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.

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

Verwandter Artikel - Csharp Image