Bildverarbeitung in C# (.NET): Bibliotheken und Codebeispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Bildern in C# (.NET): Überblick über Bibliotheken und praktische Beispiele

Bildverarbeitung ist eine der Kernaufgaben bei der Entwicklung moderner Webanwendungen, Desktop-Programme und mobiler Dienste. Im Ökosystem von C# (.NET) gibt es mehrere leistungsstarke Bibliotheken, mit denen Bilder geladen, bearbeitet, analysiert und gespeichert werden können. In diesem Artikel betrachten wir die wichtigsten Ansätze: von der klassischen System.Drawing bis zu den modernen plattformübergreifenden Lösungen ImageSharp und SkiaSharp.



1. System.Drawing.Common — der .NET-Klassiker

Die Bibliothek System.Drawing.Common ist in .NET Core/.NET 5+ als NuGet-Paket verfügbar. Sie bietet eine vertraute API für die Arbeit mit Rasterbildern (BMP, JPEG, PNG, GIF, TIFF).
Wichtig: Unter Linux und macOS ist die Installation der Bibliothek libgdiplus erforderlich.



Installation

dotnet add package System.Drawing.Common


Beispiel: Laden, Größe ändern und Speichern

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) — moderne plattformübergreifende Bibliothek

SixLabors.ImageSharp ist eine reine verwaltete Bibliothek ohne Abhängigkeiten von nativen Komponenten. Sie ist ideal für Serveranwendungen, Webdienste und Cloud-Funktionen geeignet. Unterstützt erweiterte Formate (WebP, HEIF, AVIF) und fortgeschrittene Bildbearbeitung.



Installation

dotnet add package SixLabors.ImageSharp


Beispiel: Wasserzeichen hinzufügen

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 — Grafik-Engine von Google

SkiaSharp ist ein Wrapper um die Skia-Bibliothek (verwendet in Chrome, Flutter, Android). Bietet hohe Leistung, Low-Level-Zugriff auf Pixel und Unterstützung für komplexe Vektortransformationen.



Installation

dotnet add package SkiaSharp


Beispiel: Anwenden eines Weichzeichnungsfilters (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);\

Empfehlungen