Cambiar el tamaño de una imagen en C#
-
Redimensionar una imagen con la clase
Bitmap
enC#
-
Redimensionar una imagen con la función
Graphics.DrawImage()
enC#
- Conclusión
En este tutorial, discutiremos métodos para redimensionar una imagen en C#.
Te guiaremos a través de todo el proceso, desde cargar la imagen original hasta guardar la versión redimensionada.
Redimensionar una imagen con la clase Bitmap
en C#
La clase Bitmap
proporciona muchos métodos para trabajar con imágenes en C#. La clase Bitmap
obtiene los datos de píxeles de las imágenes. Podemos redimensionar una imagen inicializando el parámetro Size
dentro del constructor de la clase Bitmap
.
El siguiente ejemplo de código nos muestra cómo podemos redimensionar una imagen con el constructor de la clase Bitmap
en C#.
using System;
using System.Drawing;
namespace resize_image {
class Program {
public static Image resizeImage(Image imgToResize, Size size) {
return (Image)(new Bitmap(imgToResize, size));
}
static void Main(string[] args) {
string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
Bitmap imgbitmap = new Bitmap(img);
Image resizedImage = resizeImage(imgbitmap, new Size(200, 200));
}
}
}
Este código muestra el proceso completo de redimensionar una imagen usando la clase Bitmap
en C#. Veamos cómo funciona.
Paso 1: Cargar la imagen original
Primero, debes cargar la imagen original usando el método Image.FromFile
. Asegúrate de reemplazar "C:\\Images\\img1.jpg"
por la ruta de tu propio archivo de imagen.
string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
Paso 2: Convertir la imagen en un objeto Bitmap
A continuación, conviertes la imagen cargada en un objeto Bitmap
. Este paso es necesario para realizar la operación de redimensionamiento.
Bitmap imgBitmap = new Bitmap(img);
Paso 3: Redimensionar la imagen
Ahora viene la parte de redimensionamiento. La función resizeImage
toma el objeto Bitmap
y el tamaño deseado (new Size(200, 200)
) y devuelve la imagen redimensionada.
Image resizedImage = ResizeImage(imgBitmap, new Size(200, 200));
Paso 4: Guardar la imagen redimensionada
Finalmente, puedes guardar la imagen redimensionada en un archivo usando el método Save
. En este ejemplo, la imagen redimensionada se guarda como "resized.jpg"
. Puedes elegir el formato de la imagen guardada cambiando la extensión del archivo (por ejemplo, .jpg
, .png
, .bmp
).
resizedImage.Save("resized.jpg");
Redimensionar una imagen con la función Graphics.DrawImage()
en C#
La función Graphics.DrawImage()
dibuja una imagen dentro de una ubicación especificada con dimensiones especificadas en C#. Con este método, podemos eliminar muchas limitaciones de redimensionar una imagen. El siguiente ejemplo de código nos muestra cómo podemos redimensionar una imagen con la función Graphics.DrawImage()
en C#.
using System;
using System.Drawing;
namespace resize_image {
class Program {
public static Image resizeImage(Image image, int width, int height) {
var destinationRect = new Rectangle(0, 0, width, height);
var destinationImage = new Bitmap(width, height);
destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
using (var graphics = Graphics.FromImage(destinationImage)) {
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.CompositingQuality = CompositingQuality.HighQuality;
using (var wrapMode = new ImageAttributes()) {
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
graphics.DrawImage(image, destinationRect, 0, 0, image.Width, image.Height,
GraphicsUnit.Pixel, wrapMode);
}
}
return (Image)destinationImage;
}
static void Main(string[] args) {
string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
Bitmap imgbitmap = new Bitmap(img);
Image resizedImage = resizeImage(imgbitmap, new Size(200, 200));
}
}
}
Veamos cómo funciona.
Paso 1: Cargar la imagen original
Primero, debes cargar la imagen original usando Image.FromFile
. Asegúrate de reemplazar "C:\\Images\\img1.jpg"
por la ruta de tu propio archivo de imagen.
string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
Paso 2: Crear un Bitmap de destino
Crea un objeto Bitmap
de destino que contendrá la imagen redimensionada. Establece su resolución para que coincida con la imagen original usando SetResolution
.
La función destinationImage.SetResolution()
mantiene la resolución dpi de la imagen independientemente de su tamaño real.
var destinationRect = new Rectangle(0, 0, width, height);
var destinationImage = new Bitmap(width, height);
destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
Paso 3: Cambiar el tamaño de la imagen
Ahora, utilizamos Graphics.FromImage
para obtener un objeto Graphics
asociado con el Bitmap
de destino. Configuramos el modo de composición y la calidad para obtener los mejores resultados.
using (var graphics = Graphics.FromImage(destinationImage)) {
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.CompositingQuality = CompositingQuality.HighQuality;
using (var wrapMode = new ImageAttributes()) {
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
graphics.DrawImage(image, destinationRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel,
wrapMode);
}
}
La propiedad graphics.CompositingMode = CompositingMode.SourceCopy
especifica que cuando se representa un color, este sobrescribe el color de fondo.
La propiedad graphics.CompositingQuality = CompositingQuality.HighQuality
especifica que solo queremos que se representen imágenes de alta calidad.
La función wrapMode.SetWrapMode(WrapMode.TileFlipXY)
evita los efectos de fantasma alrededor de los bordes de la imagen.
Paso 4: Guardar la imagen redimensionada
Finalmente, puedes guardar la imagen redimensionada en un archivo utilizando el método Save
. En este ejemplo, la imagen redimensionada se guarda como "resized.jpg"
. Puedes elegir el formato de la imagen guardada cambiando la extensión del archivo (por ejemplo, .jpg
, .png
, .bmp
).
resizedImage.Save("resized.jpg");
Conclusión
Cambiar el tamaño de las imágenes es una tarea común en el desarrollo de software, y C# ofrece múltiples enfoques para lograrlo. En este artículo, nos enfocamos en cambiar el tamaño de las imágenes utilizando la clase Bitmap
. Recorrimos todo el proceso, desde cargar la imagen original hasta guardar la versión redimensionada.
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