Procesamiento de imágenes en C# (.NET): bibliotecas y ejemplos de código

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con imágenes en C# (.NET): resumen de bibliotecas y ejemplos prácticos

El procesamiento de imágenes es una de las tareas clave al crear aplicaciones web modernas, programas de escritorio y servicios móviles. En el ecosistema C# (.NET), existen varias bibliotecas potentes que permiten cargar, editar, analizar y guardar imágenes. En este artículo, analizaremos los enfoques principales: desde la clásica System.Drawing hasta las soluciones multiplataforma modernas ImageSharp y SkiaSharp.



1. System.Drawing.Common — el clásico de .NET

La biblioteca System.Drawing.Common está disponible en .NET Core/.NET 5+ como paquete NuGet. Proporciona una API familiar para trabajar con imágenes rasterizadas (BMP, JPEG, PNG, GIF, TIFF).
Importante: en Linux y macOS requiere la instalación de la biblioteca libgdiplus.



Instalación

dotnet add package System.Drawing.Common


Ejemplo: carga, cambio de tamaño y guardado

using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;

public class ImageProcessor{ public void ResizeImage(string inputPath, string outputPath, int maxWidth, int maxHeight) { using var original = Image.FromFile(inputPath); var ratio = Math.Min((double)maxWidth / original.Width, (double)maxHeight / original.Height); int newWidth = (int)(original.Width * ratio); int newHeight = (int)(original.Height * ratio);

using var bitmap = new Bitmap(newWidth, newHeight); using var graphics = Graphics.FromImage(bitmap); graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.DrawImage(original, 0, 0, newWidth, newHeight);

bitmap.Save(outputPath, ImageFormat.Jpeg); }}


2. ImageSharp (SixLabors) — biblioteca multiplataforma moderna

SixLabors.ImageSharp es una biblioteca administrada pura sin dependencias de componentes nativos. Ideal para aplicaciones de servidor, servicios web y funciones en la nube. Admite formatos avanzados (WebP, HEIF, AVIF) y procesamiento avanzado.



Instalación

dotnet add package SixLabors.ImageSharp


Ejemplo: superposición de marca de agua

using SixLabors.ImageSharp;using SixLabors.ImageSharp.Drawing.Processing;using SixLabors.ImageSharp.Processing;using SixLabors.Fonts;

public async Task AddWatermarkAsync(string inputPath, string outputPath, string watermarkText){ using var image = await Image.LoadAsync(inputPath); var font = SystemFonts.CreateFont("Arial", 48, FontStyle.Bold);

image.Mutate(ctx => { ctx.DrawText(watermarkText, font, Color.White, new PointF(50, 50)); });

await image.SaveAsync(outputPath);}


3. SkiaSharp — motor gráfico de Google

SkiaSharp es un envoltorio sobre la biblioteca Skia (utilizada en Chrome, Flutter, Android). Proporciona alto rendimiento, acceso de bajo nivel a píxeles y soporte para transformaciones vectoriales complejas.



Instalación

dotnet add package SkiaSharp


Ejemplo: aplicación de filtro de desenfoque (Blur)

using SkiaSharp;

public void ApplyBlur(string inputPath, string outputPath, float sigma){ using var inputStream = File.OpenRead(inputPath); using var original = SKBitmap.Decode(inputStream); using var surface = new SKCanvas(original);

var paint = new SKPaint { ImageFilter = SKImageFilter.CreateBlur(sigma, sigma) }; surface.DrawBitmap(original, 0, 0, paint);

using var image = SKImage.FromBitmap(original); using var data = image.Encode(SKEncodedImageFormat.Jpeg, 90); using var outputStream = File.OpenWrite(outputPath); data.SaveTo(outputStream);}

Recommendations