Arbeiten mit Bildern in C# (.NET): Bibliotheken, Werkzeuge und Beispiele

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

Die Bildverarbeitung ist eine häufige Aufgabe in modernen C# (.NET)-Anwendungen. Ob das Laden eines Benutzeravatars, das Erstellen von Miniaturansichten, das Aufbringen von Wasserzeichen oder die Konvertierung von Formaten – .NET bietet mehrere leistungsstarke Lösungen. In diesem Artikel betrachten wir die wichtigsten Bibliotheken, ihre Möglichkeiten und schreiben echte Codebeispiele.



1. Standardbibliothek: System.Drawing.Common

Historisch gesehen ist System.Drawing.Common die erste und bekannteste Bibliothek. Sie bietet Zugriff auf GDI+ (Graphics Device Interface) von Windows. Sie hat jedoch wichtige Einschränkungen:

  • Funktioniert nur unter Windows (für .NET Core/.NET 5+ ist das Paket System.Drawing.Common erforderlich, aber unter Linux/macOS ist die Unterstützung eingeschränkt).
  • Nicht optimiert für stark ausgelastete Webservices (Speicherlecks bei falscher Verwendung).
  • Unterstützt moderne Formate (WebP, AVIF) nicht "von Haus aus".

Beispiel zum Laden und Ändern der Bildgröße:

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); }}

Dieser Code lädt das Originalbild, erstellt eine neue Bitmap mit den angegebenen Abmessungen und zeichnet das Original mit hoher Qualität darauf. Geeignet für einfache Aufgaben.



2. Moderne plattformübergreifende Bibliothek: ImageSharp (SixLabors)

ImageSharp ist eine vollständig verwaltete Bibliothek für .NET, die nicht von GDI+ abhängig ist. Sie funktioniert unter Windows, Linux und macOS. Hauptvorteile:

  • Sauberer C#-Code, keine nativen Abhängigkeiten.
  • Unterstützung für WebP, PNG, JPEG, BMP, GIF, TIFF.
  • Integrierte Filter, Drehungen, Zuschneiden, Größenänderung.
  • Hohe Leistung und Sicherheit für Webanwendungen.

Installation: dotnet add package SixLabors.ImageSharp

Beispiel zum Ändern der Größe und Speichern als 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); }}

Beachten Sie: Die Methode Mutate wendet Änderungen direkt auf das Bild an (ohne eine Kopie zu erstellen), was Speicher spart.



3. Grafik-Engine: SkiaSharp

SkiaSharp ist ein Wrapper um die Skia-Bibliothek (verwendet in Chrome, Android, Flutter). Sie bietet maximale Flexibilität und Leistung, insbesondere für komplexe 2D-Grafiken.

  • Plattformübergreifend (Windows, Linux, macOS, mobile Plattformen).
  • Unterstützung für Hardwarebeschleunigung (GPU).
  • Umfangreicher Werkzeugsatz: Pfade, Pinsel, Shader, Masken.

Beispiel zum Aufbringen eines Wasserzeichens:

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 =

Empfehlungen