Baixar imagem em C#
-
Baixe a imagem com a classe
WebClient
emC#
-
Baixe a imagem sem saber o formato com a classe
Bitmap
emC#
-
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