Bild in SVG in C# konvertieren – JPG, PNG, BMP, TIFF, GIF und ICO vektorisieren
Unter Vektorisierung versteht man die Umwandlung von Rasterbildern in Vektorgrafiken, die Elemente wie Bezierkurven, Splines und Linien verwenden. Der Prozess umfasst mindestens die Farbquantisierung, die Erkennung von Grenzen einfarbiger Formen und deren Annäherung durch Bezier-Kurven oder Polygone sowie die Verbesserung der Pfadqualität durch Rauschunterdrückung. Das Ergebnis wird in einem Vektorbildformat, z. B. einer SVG-Datei, gespeichert.
Aspose.SVG for .NET bietet zwei leistungsstarke Ansätze zur Konvertierung von Rasterbildern in das SVG-Format durch Vektorisierung:
- Die Methoden ConvertImageToSVG() der Klasse Converter bieten eine schnelle und einfache Möglichkeit, Bilder mithilfe von Konfigurationsvorgaben zu vektorisieren.
- Der Namensraum ImageVectorization enthält Klassen und Schnittstellen zur Implementierung einer besseren Kontrolle über den Vektorisierungsprozess.
Dieser Artikel behandelt die grundlegenden Konzepte und praktischen Beispiele für die Konvertierung von Rasterbildern wie JPG, PNG, BMP, TIFF, GIF und ICO in SVG unter Verwendung der Methoden Converter.ConvertImageToSVG()
.
Weitere Informationen über die Konvertierung von Bildern in Vektorgrafiken mithilfe der ImageVectorization API finden Sie im Kapitel Bild- und Textvektorisierung. Sie finden dort eine Beschreibung des Bildvektorisierungsprozesses, die Verwendung von Vektorisierungsalgorithmen und -parametern sowie C#-Beispiele für die Verwendung der Vectorize() Methoden.
Bild in SVG konvertieren
Die Konvertierung von Rasterbildern in SVG ermöglicht skalierbare, auflösungsunabhängige Grafiken, die bei jeder Größe scharf bleiben, was sie ideal für Webdesign und andere Anwendungen macht. Das folgende Beispiel zeigt, wie ein PNG-Rasterbild mit der Methode ConvertImageToSVG()
in SVG konvertiert werden kann:
- Der Konvertierungsprozess beginnt mit der Erstellung eines ImageVectorizerConfiguration-Objekts. Diese Konfiguration steuert, wie die Vektorisierung funktioniert, einschließlich der Anzahl der beizubehaltenden Farben, des Grads der angewandten Glättung, der Methoden zum Nachzeichnen von Umrissen und anderer Einstellungen.
- Die Methode
ConvertImageToSVG(
configuration, imageFile, outputFile
) vektorisiert das Eingabebild, konvertiert es in ein skalierbares SVG-Format und speichert es im angegebenen Ausgabepfad.
Fügen Sie die folgenden Namespaces hinzu:
1using Aspose.Svg;
2using System.IO;
3using Aspose.Svg.Converters;
4using Aspose.Svg.ImageVectorization;
C# code for image to SVG conversion:
1// Convert Image to SVG using C#
2
3// Prepare paths for a source image file and output SVG file
4string imageFile = Path.Combine(DataDir, "flower-pink.png");
5string outputFile = Path.Combine(OutputDir, "flower-pink.svg");
6
7// Create a configuration object
8ImageVectorizerConfiguration configuration = new ImageVectorizerConfiguration
9{
10 PathBuilder =
11 new BezierPathBuilder
12 {
13 TraceSmoother = new ImageTraceSmoother(3),
14 ErrorThreshold = 5,
15 MaxIterations = 5
16 },
17 ColorsLimit = 15,
18 LineWidth = 2
19};
20
21// Convert Image to SVG
22Converter.ConvertImageToSVG(configuration, imageFile, outputFile);
Die Abbildung zeigt das Ergebnis der Bildvektorisierung: a) ursprüngliches PNG-Bild; b) resultierendes SVG:
Vektorisierungsoptionen
Um optimale Ergebnisse zu erzielen, können Sie mit verschiedenen Konfigurationsoptionen experimentieren. Eine niedrigere Farbgrenze und eine höhere Glättung erzeugen beispielsweise ein abstrakteres und stilisierteres Bild, während höhere Genauigkeitseinstellungen mehr Details auf Kosten der Komplexität erhalten.
Einige Eigenschaften der Klasse ImageVectorizerConfiguration:
ColorsLimit
– legt die maximale Anzahl von Farben fest, die zur Quantisierung des Bildes verwendet werden. Eine Verringerung des Wertes vereinfacht die Ausgabe und reduziert die Dateigröße.LineWidth
– steuert die visuelle Dicke der nachgezeichneten Kanten.
Eigenschaften der Klasse BezierPathBuilder:
TraceSmoother
– stellt die Glättungsstufe für Kurven und Linien ein.ErrorThreshold
undMaxIterations
– diese Parameter beeinflussen die Pfadgenauigkeit und die Leistung.
Bild von Stream in SVG konvertieren
Aspose.SVG for .NET unterstützt sowohl dateibasierte als auch streambasierte Workflows und ist damit flexibel für Desktop-, Web- und serviceorientierte Anwendungen. Das folgende Beispiel zeigt, wie die Methode
ConvertImageToSVG(configuration, inputStream, outputFile
) für die Umwandlung von JPG in SVG angewendet wird:
1// Convert raster image JPG to vector SVG using C#
2
3// Prepare input and output
4string imagePath = Path.Combine(DataDir, "tulip.jpg");
5string outputFile = Path.Combine(OutputDir, "tulip.svg");
6
7// Open the image as a FileStream
8using (FileStream inputStream = new FileStream(imagePath, FileMode.Open, FileAccess.Read))
9{
10 // Create vectorization configuration
11 ImageVectorizerConfiguration configuration = new ImageVectorizerConfiguration
12 {
13 PathBuilder = new BezierPathBuilder
14 {
15 TraceSmoother = new ImageTraceSmoother(1),
16 ErrorThreshold = 10,
17 MaxIterations = 1
18 },
19 ColorsLimit = 30,
20 LineWidth = 1
21 };
22
23 // Perform conversion from image stream to SVG
24 Converter.ConvertImageToSVG(configuration, inputStream, outputFile);
25}
26
27Console.WriteLine("Image converted to SVG successfully.");
Die Abbildung zeigt das Ergebnis der Bildvektorisierung: a) ursprüngliches JPG-Bild; b) resultierendes SVG:
Schlussfolgerungen und Empfehlungen
- Verwenden Sie die Methode
ConvertImageToSVG()
für die schnelle Umwandlung von Bildern in SVG mit einer benutzerdefinierten Einstellung. - Beachten Sie die folgenden Empfehlungen, um die besten Ergebnisse und Leistungen zu erzielen:
- Optimieren Sie die Quellbilder vor der Konvertierung: Verwenden Sie kontrastreiche Bilder, damit der Konverter saubere Grenzen erkennen kann; ändern Sie die Größe großer Bilder, um die Verarbeitung zu beschleunigen und die Qualität zu verbessern.
- Wählen Sie die richtigen ImageVectorizerConfiguration-Einstellungen. Selbst mit den Standardwerten erzeugt die Konvertierung eine hochwertige SVG-Ausgabe. Eine Feinabstimmung dieser Parameter ist jedoch oft notwendig, um das gewünschte Gleichgewicht zwischen Genauigkeit und Einfachheit zu erreichen.
- Verwenden Sie bei der Verarbeitung von hochgeladenen Dateien, In-Memory-Bildern oder Cloud-Daten eine streambasierte Eingabe – dies vermeidet temporäre Dateien und verbessert die Leistung.
- Für große Datensätze können Sie eine Schleife zur Stapelkonvertierung von Bildern mit Fehlerbehandlung und Protokollierung erstellen.
- Öffnen Sie die resultierenden SVGs immer in einem Browser oder einem Vektor-Editor, um die Qualität zu überprüfen.
Siehe auch
- Wenn Sie wissen möchten, wie Sie mit C# Vektorschablonen aus Rasterbildern erstellen können, lesen Sie den Artikel Bildschablone – Erstellen von Schablonenbildern in C#.
- Sie können die webbasierte Anwendung Schablonen-Zeichnung verwenden, um die Erstellung von Vektorschablonen aus Bildern zu erproben.
- Im Artikel Bildvektorisierung – Arbeitsablauf erfahren Sie, wie der Prozess der Bildvektorisierung funktioniert, wie Sie Vektorisierungsalgorithmen und Konfigurationsoptionen anwenden und wie Sie Rasterbilder wie PNG, JPG, BMP, TIFF, GIF und ICO mit der Klasse ImageVectorizer in skalierbare SVG-Dokumente umwandeln.
Aspose.SVG bietet einen kostenlosen Online- Image zu SVG Konverter, der auf jeder Plattform funktioniert und eine genaue und effiziente Konvertierung ermöglicht. Mit dieser Anwendung können Sie eine Reihe von Optionen anwenden, um das perfekte Ergebnis zu erzielen. Sparen Sie Ihre Zeit und testen Sie diesen kostenlosen Image zu SVG Konverter, um alle Vorteile von Vektorgrafiken zu nutzen!