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>
Ich versuche, einen SVG umzuwandeln.[code]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>
[/code]