Выделение выпуска SVG на Skcanvas с Skiasharp & Svg.skiaC#

Место общения программистов C#
Ответить
Anonymous
 Выделение выпуска SVG на Skcanvas с Skiasharp & Svg.skia

Сообщение Anonymous »

Я пытаюсь преобразовать SVG, который я получил в качестве строки в PNG с определенным размером в .net 8.
Однако выход Png пуст, просто цвет фона ...
Я не могу понять, почему Drawpicture не применяет SVG к Canvas.using SkiaSharp;
using Svg.Skia;

// .....

byte[] pngData;
int width = 50;
int height = 50;
string svgString = "........" // using Изображение 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>
Изменить: образец SVG, который я использую для моего теста: < /p>



Подробнее здесь: https://stackoverflow.com/questions/797 ... p-svg-skia
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»