Ausgabe von SVG auf Skanvas mit Skisharp & Svg.skia

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Ausgabe von SVG auf Skanvas mit Skisharp & Svg.skia

by Anonymous » Today, 02:02

Ich versuche, einen SVG umzuwandeln.

Code: Select all

using SkiaSharp;
using Svg.Skia;

// .....

byte[] pngData;
int width = 50;
int height = 50;
string svgString = "........" // using https://api.iconify.design/fluent-emoji-flat/alarm-clock.svg as an example

using (var svg = new SKSvg())
{
using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(svgString)))
{
svg.Load(stream);
}

var picture = svg.Picture;

if (picture != null)
{
using (var bitmap = new SKBitmap(width, height))
using (var canvas = new SKCanvas(bitmap))
{
canvas.Clear(SKColors.White);
// Scale to fit
var scaleX = (float)width / picture.CullRect.Width;
var scaleY = (float)height / picture.CullRect.Height;
var scale = Math.Min(scaleX, scaleY);

if (scale > 0)
canvas.Scale(scale);

canvas.Clear(SKColors.Green);
canvas.DrawPicture(picture);

canvas.Flush();
canvas.Save();

using (var image = SKImage.FromBitmap(bitmap))
using (var pngEncodedData = image.Encode(SKEncodedImageFormat.Png, 100))
{
pngData = pngEncodedData.ToArray();
}
}
}
else
{
throw new ArgumentException("Failed to load SVG.");
}
}

// Save the intermediate PNG as "icon-preview.png"
using (var fileStream = File.OpenWrite("icon-preview.png"))
{
fileStream.Write(pngData, 0, pngData.Length);
}
< /code>
Bearbeiten: Das Beispiel svg, das ich für meinen Test verwende: < /p>


Top