Télécharger l'image en C#

Muhammad Maisam Abbas 16 février 2024
  1. Télécharger l’image avec la classe WebClient en C#
  2. Télécharger l’image sans connaître le format avec la classe Bitmap en C#
  3. Télécharger l’image sans connaître le format avec la fonction Image.FromStream() en C#
Télécharger l'image en C#

Ce tutoriel abordera les méthodes de téléchargement d’une image en C#.

Télécharger l’image avec la classe WebClient en C#

La classe WebClient fournit des fonctionnalités d’envoi et de réception de données depuis une URL en C#. La fonction WebClient.DownloadFile(url, path) télécharge un fichier à partir d’une URL url particulière et l’enregistre dans le path. On peut utiliser la fonction WebClient.DownloadFile() pour télécharger une image depuis une 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);
      }
    }
  }
}

Dans le code ci-dessus, nous avons téléchargé une image depuis l’URL url et l’avons sauvegardée dans le chemin Image.png avec la fonction client.DownloadFile(new Uri(url), "Image.png") en C#.

Télécharger l’image sans connaître le format avec la classe Bitmap en C#

Dans l’exemple ci-dessus, nous devons connaître le format de fichier image à télécharger; ensuite, nous pouvons le télécharger à partir de l’URL et l’enregistrer. Mais, si nous ne connaissons pas le format du fichier image, nous pouvons utiliser la classe Bitmap. La classe Bitmap fournit des méthodes pour travailler avec des images en C#. Cette méthode va télécharger et sauvegarder les fichiers dans tous les formats que la classe Bitmap peut gérer. La fonction Bitmap.Save(path, format) écrit le contenu de notre bitmap dans un fichier dans le path au format format. La classe ImageFormat peut être utilisée dans la fonction Bitmap.Save() pour spécifier manuellement le format de l’image à enregistrer. L’exemple de code suivant nous montre comment télécharger une image depuis une URL sans connaître le format avec la fonction Bitmap.Save() en 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);
      }
    }
  }
}

Nous avons défini la fonction SaveImage() qui télécharge et enregistre une image. Nous avons utilisé la classe WebClient pour faire des requêtes web à l ‘url. Nous avons utilisé la classe Stream pour lire les données de la fonction client.OpenRead(url). Nous avons utilisé la classe Bitmap pour convertir le flux au format bitmap. Nous avons ensuite utilisé la fonction bitmap.Save() pour enregistrer le bitmap dans le chemin Image1.png au format ImageFormat.Png.

Télécharger l’image sans connaître le format avec la fonction Image.FromStream() en C#

On peut aussi faire la même chose que l’exemple précédent avec la fonction Image.FromStream() en C#. La fonction Image.FromStream() lit un fichier image à partir d’un flux mémoire en C#. Pour cela, nous pouvons d’abord télécharger toutes les données de notre URL vers un tableau d’octets. Ensuite, nous pouvons charger ce tableau dans un objet de la classe MemoryStream. On peut alors utiliser la fonction Image.FromStream() pour lire une image à partir de l’objet de la classe MemoryStream. On peut alors sauvegarder cette image dans un chemin dans un format particulier avec la fonction Image.Save(path, format) en C#. L’exemple de code suivant nous montre comment télécharger une image depuis une URL sans connaître sa mise en forme avec la fonction Image.FromStream() en 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);
      }
    }
  }
}

Nous avons défini la fonction SaveImage() qui télécharge et enregistre une image. Nous avons utilisé le tableau d’octets data pour stocker les données renvoyées par la fonction webClient.DownloadData(url). Nous avons ensuite initialisé une instance mem de la classe MemoryStream avec data. On lit ensuite l’image yourImage du mem avec la fonction Image.FromStream(mem). Au final, nous avons sauvegardé l’image yourImage dans le chemin Image2.png avec le formatage ImageFormat.Png en utilisant la fonction yourImage.Save("Image2.png", ImageFormat.Png).

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

Article connexe - Csharp Image