Конвертировать SVG в PNG или JPEG - PullRequest
9 голосов
/ 06 июня 2011

Какие методы существуют в настоящее время для программного преобразования изображения SVG в PNG или JPEG с использованием C #?

Я прочитал все существующие вопросы SO по этой теме, и все они включают использование внешнего процессазапустить стороннюю программу.В моем случае это не вариант, так как мы скоро перейдем на Azure.

Что мне нужно сделать, это загрузить файл SVG с диска и, в идеале, преобразовать его во что-нибудь, чем можно манипулировать с помощью классов System.Drawing.*

Ответы [ 3 ]

6 голосов
/ 24 октября 2016

Хорошо. Я поделюсь с моим решением для рендеринга SVG-файла с измененным размером до нужного размера.

Я устанавливаю этот пакет nuget

Install-Package Svg

Вы можете найти исходный код пакета на github здесь

Затем вы можете сделать это:

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

Наслаждайтесь!

4 голосов
/ 06 июня 2011

Вы можете взглянуть на SVG Rendering Engine в CodePlex.Он имеет перегрузку, которая будет принимать поток в памяти (ваш SVG), который затем может быть использован для преобразования в изображение .

2 голосов
/ 18 апреля 2017

Все, что вам нужно сделать, это установить пакет nuget библиотеки рендеринга SVG.

Install-Package Svg

А потом

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

Вот и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...