Descargar imagen en C#
-
Descargar imagen con la clase
WebClient
enC#
-
Descargar imagen sin conocer el formato con la clase
Bitmap
enC#
-
Descargar imagen sin conocer el formato con la función
Image.FromStream()
enC#
Este tutorial discutirá los métodos para descargar una imagen en C#.
Descargar imagen con la clase WebClient
en C#
La clase WebClient
proporciona funcionalidad para enviar y recibir datos desde una URL en C#. La función WebClient.DownloadFile(url, path)
descarga un archivo de una URL particular url
y lo guarda en la path
. Podemos utilizar la función WebClient.DownloadFile()
para descargar una imagen desde una 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);
}
}
}
}
En el código anterior, descargamos una imagen de la URL url
y la guardamos en la ruta Image.png
con la función client.DownloadFile(new Uri(url), "Image.png")
en C#.
Descargar imagen sin conocer el formato con la clase Bitmap
en C#
En el ejemplo anterior, debemos conocer el formato del archivo de imagen que se descargará; luego, podemos descargarlo de la URL y guardarlo. Pero, si no conocemos el formato del archivo de imagen, podemos usar la clase Bitmap
. La clase Bitmap
proporciona métodos para trabajar con imágenes en C#. Este método descargará y guardará archivos en todos los formatos que la clase Bitmap
puede manejar. La función Bitmap.Save(path, format)
escribe el contenido de nuestro mapa de bits en un archivo en la path
con el formato format
. La clase ImageFormat
se puede utilizar dentro de la función Bitmap.Save()
para especificar manualmente el formato de la imagen a guardar. El siguiente ejemplo de código nos muestra cómo podemos descargar una imagen desde una URL sin conocer el formato con la función 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);
}
}
}
}
Definimos la función SaveImage()
que descarga y guarda una imagen. Usamos la clase WebClient
para realizar solicitudes web a la url
. Usamos la clase Stream
para leer los datos de la función client.OpenRead(url)
. Usamos la clase Bitmap
para convertir la secuencia a un formato de mapa de bits. Luego usamos la función bitmap.Save()
para guardar el bitmap
en la ruta Image1.png
con el formato ImageFormat.Png
.
Descargar imagen sin conocer el formato con la función Image.FromStream()
en C#
También podemos hacer lo mismo que en el ejemplo anterior con la función Image.FromStream()
en C#. La función Image.FromStream()
lee un archivo de imagen de un flujo de memoria en C#. Para esto, primero podemos descargar todos los datos de nuestra URL a un array de bytes. Luego, podemos cargar esa matriz en un objeto de la clase MemoryStream
. Entonces podemos usar la función Image.FromStream()
para leer una imagen del objeto de la clase MemoryStream
. Luego podemos guardar esta imagen en una ruta en un formato particular con la función Image.Save(path, format)
en C#. El siguiente ejemplo de código nos muestra cómo descargar una imagen de una URL sin saber su formato con la función 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);
}
}
}
}
Definimos la función SaveImage()
que descarga y guarda una imagen. Usamos el array de bytes data
para almacenar los datos devueltos por la función webClient.DownloadData(url)
. Luego inicializamos una instancia mem
de la clase MemoryStream
con data
. Luego leemos la imagen yourImage
de la mem
con la función Image.FromStream(mem)
. Al final, guardamos la imagen yourImage
en la ruta Image2.png
con el formato ImageFormat.Png
usando la función 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