Skip to content
An SVG rendering library.
C# Other
  1. C# 99.3%
  2. Other 0.7%
Branch: master
Clone or download

Latest commit

Latest commit 4f914d4 Apr 1, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Remove SvgXmlDiagnostics project Mar 5, 2020
build Refactored interface Mar 3, 2020
externals Update SVG Mar 18, 2020
icon Added icon Dec 25, 2019
samples Update MainWindow.xaml.cs Mar 2, 2020
src Update SvgSpecularLightingView.xaml Mar 13, 2020
tests Updated test Apr 1, 2020
.editorconfig Create .editorconfig Oct 22, 2019
.gitattributes Added git files Oct 22, 2019
.gitignore Added git files Oct 22, 2019
.gitmodules Added git files Oct 22, 2019
.nuke Initial import Oct 22, 2019
CHANGELOG.md Updated version Feb 28, 2020
LICENSE.TXT Update LICENSE.TXT Jan 19, 2020
NuGet.Config Update NuGet.Config Jan 29, 2020
README.md Update README.md Mar 3, 2020
Svg.Skia.sln Added unit tests Apr 1, 2020
_config.yml Set theme jekyll-theme-cayman Jan 27, 2020
build.ps1 Initial import Oct 22, 2019
build.sh Initial import Oct 22, 2019
global.json Update global.json Feb 28, 2020

README.md

Svg.Skia

Gitter

Build status CI

NuGet NuGet MyGet

GitHub release Github All Releases Github Releases

Svg.Skia is an SVG rendering library.

About

Svg.Skia can be used as a .NET library or as a CLI application to render SVG files based on a static SVG Full 1.1 subset to raster images or to a backend's canvas.

The Svg.Skia is using SVG library to load Svg object model.

The Svg.Skia library is implemented using SkiaSharp rendering backend that aims to be on par or more complete then original System.Drawing implementation and more performant and cross-platform.

The Svg.Skia can be used in same way as the SkiaSharp.Extended.Svg (load svg files as SKPicture).

The Svg library has more complete implementation of Svg document model then SkiaSharp.Extended.Svg and the Svg.Skia renderer will provide more complete rendering subsystem implementation.

NuGet

Svg.Skia is delivered as a NuGet package.

You can find the packages here NuGet and install the package like this:

Install-Package Svg.Skia

or by using nightly build feed:

  • Add https://www.myget.org/F/svgskia-nightly/api/v2 to your package sources
  • Alternative nightly build feed https://pkgs.dev.azure.com/wieslawsoltes/GitHub/_packaging/CI/nuget/v3/index.json
  • Update your package using Svg.Skia feed

and install the package like this:

Install-Package Svg.Skia -Pre

Usage

Library

Install Package

dotnet add package Svg.Skia
Install-Package Svg.Skia

Draw on Canvas

using SkiaSharp;
using Svg.Skia;

var svg = new SKSvg();

svg.Load("image.svg");

SKCanvas canvas = ...
canvas.DrawPicture(svg.Picture);

Save as Png

using SkiaSharp;
using Svg.Skia;

using (var svg = new SKSvg())
{
    if (svg.Load("image.svg") != null)
    {
        svg.Save("image.png", SKEncodedImageFormat.Png, 100, 1f, 1f);
    }
}
using System.IO;
using SkiaSharp;
using Svg.Skia;

using (var svg = new SKSvg())
{
    if (svg.Load("image.svg") != null)
    {
        using (var stream = File.OpenWrite("image.png"))
        {
            svg.Picture.ToImage(stream, SKColors.Empty, SKEncodedImageFormat.Png, 100, 1f, 1f);
        }
    }
}
using SkiaSharp;
using Svg.Skia;

using (var svg = new SKSvg())
{
    if (svg.Load("image.svgz") != null)
    {
        svg.Save("image.png", SKEncodedImageFormat.Png, 100, 1f, 1f);
    }
}
using System.IO;
using SkiaSharp;
using Svg.Skia;

using (var svg = new SKSvg())
{
    if (svg.Load("image.svgz") != null)
    {
        using (var stream = File.OpenWrite("image.png"))
        {
            svg.Picture.ToImage(stream, SKColors.Empty, SKEncodedImageFormat.Png, 100, 1f, 1f);
        }
    }
}

Save as Pdf

using SkiaSharp;
using Svg.Skia;

using (var svg = new SKSvg())
{
    if (svg.Load("image.svg") != null)
    {
        svg.Picture.ToPdf("image.pdf", SKColors.Empty, 1f, 1f);
    }
}

Save as Xps

using SkiaSharp;
using Svg.Skia;

using (var svg = new SKSvg())
{
    if (svg.Load("image.svg") != null)
    {
        svg.Picture.ToXps("image.xps", SKColors.Empty, 1f, 1f);
    }
}

Tool

dotnet tool install -g Svg.Skia.Converter
Svg.Skia.Converter:
  Converts a svg file to an encoded bitmap image.

Usage:
  Svg.Skia.Converter [options]

Options:
  -f, --inputFiles <inputfiles>              The relative or absolute path to the input files
  -d, --inputDirectory <inputdirectory>      The relative or absolute path to the input directory
  -o, --outputDirectory <outputdirectory>    The relative or absolute path to the output directory
  --outputFiles <outputfiles>                The relative or absolute path to the output files
  -p, --pattern <pattern>                    The search string to match against the names of files in the input directory
  --format <format>                          The output image format
  -q, --quality <quality>                    The output image quality
  -b, --background <background>              The output image background
  -s, --scale <scale>                        The output image horizontal and vertical scaling factor
  --scaleX, -sx <scalex>                     The output image horizontal scaling factor
  --scaleY, -sy <scaley>                     The output image vertical scaling factor
  --systemLanguage <systemlanguage>          The system language name as defined in BCP 47
  --quiet                                    Set verbosity level to quiet
  -c, --load-config <load-config>            The relative or absolute path to the config file
  --save-config <save-config>                The relative or absolute path to the config file
  --version                                  Show version information
  -?, -h, --help                             Show help and usage information

Supported formats: png, jpg, jpeg, webp, pdf, xps

Build

To build the projects you need to install .NET Core 3.1 version SDK 3.1.102.

git clone git@github.com:wieslawsoltes/Svg.Skia.git
cd Svg.Skia
git submodule update --init --recursive
dotnet build -c Release

Publish Managed

cd ./src/Svg.Skia.Converter
dotnet publish -c Release -f netcoreapp3.1 -r win7-x64 /p:PublishTrimmed=True /p:PublishReadyToRun=True -o Svg.Skia.Converter_netcoreapp3.1_win7-x64
cd ./src/Svg.Skia.Converter
dotnet publish -c Release -f netcoreapp3.1 -r ubuntu.14.04-x64 /p:PublishTrimmed=True /p:PublishReadyToRun=True -o Svg.Skia.Converter_netcoreapp3.1_ubuntu.14.04-x64
cd ./src/Svg.Skia.Converter
dotnet publish -c Release -f netcoreapp3.1 -r osx.10.12-x64 /p:PublishTrimmed=True /p:PublishReadyToRun=True -o Svg.Skia.Converter_netcoreapp3.1_osx.10.12-x64
cd ./src/Svg.Skia.Converter
dotnet publish -c Release -f netcoreapp3.1 -r debian.8-x64 /p:PublishTrimmed=True /p:PublishReadyToRun=True -o Svg.Skia.Converter_netcoreapp3.1_debian.8-x64
cd ./src/SvgToPng
dotnet publish -c Release -f netcoreapp3.1 -r win7-x64 -o SvgToPng_netcoreapp3.1_win7-x64
cd ./src/SvgToPng
dotnet publish -c Release -f net461 -r win7-x64 -o SvgToPng_net461_win7-x64
cd ./src/SvgXml.Diagnostics
dotnet publish -c Release -f netcoreapp3.1 -r win7-x64 -o SvgXml.Diagnostics_netcoreapp3.1_win7-x64

Publish Native

cd ./src/Svg.Skia.Converter
dotnet publish -c Release -f netcoreapp3.1 -r win-x64 -o Svg.Skia.Converter_netcoreapp3.1_win-x64
cd ./src/Svg.Skia.Converter
dotnet publish -c Release -f netcoreapp3.1 -r linux-x64 -o Svg.Skia.Converter_netcoreapp3.1_linux-x64
cd ./src/Svg.Skia.Converter
dotnet publish -c Release -f netcoreapp3.1 -r osx-x64 -o Svg.Skia.Converter_netcoreapp3.1_osx-x64

Externals

The Svg.Skia library is using code from the https://github.com/vvvv/SVG

License

Parts of Svg.Skia source code are adapted from the https://github.com/vvvv/SVG

Svg.Skia is licensed under the MIT license.

You can’t perform that action at this time.