10 Stimmen

SVG in PNG oder JPEG umwandeln

Welche Methoden gibt es derzeit, um ein SVG-Bild in PNG oder JPEG programmatisch mit C# zu konvertieren?

Ich habe alle bestehenden SO-Fragen zu diesem Thema gelesen, und in allen geht es um die Verwendung eines externen Prozesses zum Starten eines Drittanbieterprogramms. In meinem Fall ist das keine Option, da wir bald zu Azure migrieren werden.

Ich muss in der Lage sein, die SVG-Datei von der Festplatte zu laden und sie idealerweise in etwas zu konvertieren, das ich mit den System.Drawing-Klassen bearbeiten kann.

Irgendwelche Ideen?

0 Stimmen

imagemagick.codeplex.com nützlich sein könnte.

0 Stimmen

Haben Sie Ihr Problem behoben? Würden Sie uns bitte helfen?

0 Stimmen

Nein, das habe ich nie getan. Wir haben diesen Ansatz aufgegeben.

8voto

Daniel Punkte 8734

Nun ja. Ich werde mit meiner Lösung, um eine SVG-Datei auf eine angemessene Größe zu rendern teilen.

Ich installiere dieses Nuget-Paket

Install-Package Svg

Sie können den Quellcode des Pakets auf github finden aquí

Dann können Sie dies tun:

var svgDocument = SvgDocument.Open(path);
using (var smallBitmap = svgDocument.Draw())
{
    var width = smallBitmap.Width;
    var height = smallBitmap.Height;
    if (width != 2000)// I resize my bitmap
    {
        width = 2000;
        height = 2000/smallBitmap.Width*height;
    }

    using (var bitmap = svgDocument.Draw(width, height))//I render again
    {
        bitmap.Save(pngPath, ImageFormat.Png);
    }
}

Viel Spaß!

4voto

keyboardP Punkte 67673

Sie können sich ansehen SVG-Rendering-Engine auf CodePlex. Es hat eine Überladung, die einen In-Memory-Stream (Ihr SVG) nimmt, der dann verwendet werden kann, um in ein Bild konvertieren .

4voto

Alles, was Sie tun müssen, ist das Nuget-Paket SVG Rendering Library zu installieren.

Install-Package Svg

Und dann

        //read svg document from file system
        var svgDocument = SvgDocument.Open("test.svg");
        var bitmap = svgDocument.Draw();
        //save converted svg to file system
        bitmap.Save("test.png", ImageFormat.Png);

Das war's.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X