Baixar imagem em C#

Muhammad Maisam Abbas 16 fevereiro 2024
  1. Baixe a imagem com a classe WebClient em C#
  2. Baixe a imagem sem saber o formato com a classe Bitmap em C#
  3. Baixe a imagem sem saber o formato com a função Image.FromStream() em C#
Baixar imagem em C#

Este tutorial discutirá os métodos de download de uma imagem em C#.

Baixe a imagem com a classe WebClient em C#

A classe WebClient fornece funcionalidade para enviar e receber dados de um URL em C#. A função WebClient.DownloadFile(url, path) baixa um arquivo de um determinado URL url e salva-o no path. Podemos usar a função WebClient.DownloadFile() para baixar uma imagem de um 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);
      }
    }
  }
}

No código acima, baixamos uma imagem da URL url e a salvamos no caminho Image.png com a função client.DownloadFile(new Uri(url), "Image.png") em C#.

Baixe a imagem sem saber o formato com a classe Bitmap em C#

No exemplo acima, temos que saber o formato do arquivo de imagem a ser baixado; então, podemos baixá-lo do URL e salvá-lo. Mas, se não sabemos o formato do arquivo de imagem, podemos usar a classe Bitmap. A classe Bitmap fornece métodos para trabalhar com imagens em C#. Este método irá baixar e salvar arquivos em todos os formatos que a classe Bitmap pode manipular. A função Bitmap.Save(path, format) grava o conteúdo do nosso bitmap em um arquivo no path com o formato format. A classe ImageFormat pode ser usada dentro da função Bitmap.Save() para especificar manualmente o formato da imagem a ser salva. O exemplo de código a seguir nos mostra como podemos baixar uma imagem de um URL sem saber o formato com a função Bitmap.Save() em 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);
      }
    }
  }
}

Definimos a função SaveImage() que baixa e salva uma imagem. Usamos a classe WebClient para fazer solicitações da web ao url. Usamos a classe Stream para ler os dados da função client.OpenRead(url). Usamos a classe Bitmap para converter o fluxo em um formato de bitmap. Em seguida, usamos a função bitmap.Save() para salvar o bitmap no caminho Image1.png com o formato sendo ImageFormat.Png.

Baixe a imagem sem saber o formato com a função Image.FromStream() em C#

Também podemos fazer o mesmo que no exemplo anterior com a função Image.FromStream() em C#. A função Image.FromStream() lê um arquivo de imagem de um fluxo de memória em C#. Para isso, podemos primeiro baixar todos os dados de nossa URL para um array de bytes. Então, podemos carregar esse array em um objeto da classe MemoryStream. Podemos então usar a função Image.FromStream() para ler uma imagem do objeto da classe MemoryStream. Podemos então salvar essa imagem em um caminho em um formato específico com a função Image.Save(path, format) em C#. O exemplo de código a seguir nos mostra como baixar uma imagem de um URL sem saber sua formatação com a função Image.FromStream() em 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);
      }
    }
  }
}

Definimos a função SaveImage() que baixa e salva uma imagem. Usamos o array de bytes data para armazenar os dados retornados pela função webClient.DownloadData(url). Em seguida, inicializamos uma instância mem da classe MemoryStream com data. Em seguida, lemos a imagem yourImage do mem com a função Image.FromStream(mem). No final, salvamos a imagem yourImage no caminho Image2.png com a formatação ImageFormat.Png usando a função 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

Artigo relacionado - Csharp Image