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.CommonBeispiel: 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.ImageSharpBeispiel: 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 SkiaSharpBeispiel: 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);\ Auch in der Bibliothek
Kryptographie in Java: Verschlüsselung und Hashing – praktischer Leitfaden
Generierung von PDF-Berichten in PHP: Überblick über Bibliotheken und Beispiele
Java für Geolokalisierung und Karten: Bibliotheken, APIs und Beispiele
NestJS für JavaScript (Node.js): Komplettleitfaden mit Beispielen