Baixar imagem em C#
-
Baixe a imagem com a classe
WebClientemC# -
Baixe a imagem sem saber o formato com a classe
BitmapemC# -
Baixe a imagem sem saber o formato com a função
Image.FromStream()emC#
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).
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