Trabalho com imagens em C# (.NET): bibliotecas, ferramentas e exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com imagens em C# (.NET): visão geral das bibliotecas e exemplos práticos

O processamento de imagens é uma das tarefas comuns em aplicações modernas em C# (.NET). Seja para carregar o avatar de um usuário, criar miniaturas, aplicar marcas d'água ou converter formatos — o .NET oferece várias soluções poderosas. Neste artigo, vamos explorar as principais bibliotecas, suas capacidades e escrever exemplos reais de código.



1. Biblioteca padrão: System.Drawing.Common

Historicamente, a primeira e mais conhecida é a System.Drawing.Common. Ela fornece acesso ao GDI+ (Graphics Device Interface) do Windows. No entanto, possui limitações importantes:

  • Funciona apenas no Windows (para .NET Core/.NET 5+ é necessário o pacote System.Drawing.Common, mas no Linux/macOS o suporte é limitado).
  • Não é otimizada para serviços web de alta carga (vazamentos de memória se usada incorretamente).
  • Não suporta formatos modernos (WebP, AVIF) "de fábrica".

Exemplo de carregamento e redimensionamento de imagem:

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

public static void ResizeImage(string sourcePath, string destPath, int newWidth, int newHeight){ using (var image = Image.FromFile(sourcePath)) using (var resized = new Bitmap(newWidth, newHeight)) using (var graphics = Graphics.FromImage(resized)) { graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; graphics.DrawImage(image, 0, 0, newWidth, newHeight); resized.Save(destPath, ImageFormat.Jpeg); }}

Este código carrega a imagem original, cria um novo Bitmap com as dimensões especificadas e desenha a imagem original com alta qualidade. Adequado para tarefas simples.



2. Biblioteca moderna e multiplataforma: ImageSharp (SixLabors)

ImageSharp é uma biblioteca totalmente gerenciada para .NET, independente do GDI+. Funciona no Windows, Linux e macOS. Principais vantagens:

  • Código C# puro, sem dependências nativas.
  • Suporte a WebP, PNG, JPEG, BMP, GIF, TIFF.
  • Filtros integrados, rotações, corte, redimensionamento.
  • Alta performance e segurança para aplicações web.

Instalação: dotnet add package SixLabors.ImageSharp

Exemplo de redimensionamento e salvamento em WebP:

using SixLabors.ImageSharp;using SixLabors.ImageSharp.Processing;using SixLabors.ImageSharp.Formats.Webp;

public static void ResizeToWebp(string input, string output, int width, int height){ using (var image = Image.Load(input)) { image.Mutate(x => x.Resize(width, height)); var encoder = new WebpEncoder { Quality = 80 }; image.Save(output, encoder); }}

Observe: o método Mutate aplica as alterações diretamente na imagem (sem criar uma cópia), economizando memória.



3. Motor gráfico: SkiaSharp

SkiaSharp é um wrapper para a biblioteca Skia (usada no Chrome, Android, Flutter). Ela oferece máxima flexibilidade e desempenho, especialmente para gráficos 2D complexos.

  • Multiplataforma (Windows, Linux, macOS, plataformas móveis).
  • Suporte a aceleração por hardware (GPU).
  • Conjunto rico de ferramentas: caminhos, pincéis, shaders, máscaras.

Exemplo de aplicação de marca d'água:

using SkiaSharp;

public static void AddWatermark(string imagePath, string watermarkText, string outputPath){ using (var input = SKBitmap.Decode(imagePath)) using (var canvas = new SKCanvas(input)) using (var paint = new SKPaint { Color = SKColors.White.WithAlpha(128), TextSize =

Recommendations