Inserimento SkiaSharp x gestione SVG --> png cross-platform

This commit is contained in:
Samuele Locatelli
2023-08-01 11:45:07 +02:00
parent 71376e4a35
commit f9717618af
6 changed files with 34 additions and 16 deletions
@@ -1,8 +1,14 @@
using Microsoft.AspNetCore.Mvc;
using NLog;
using SkiaSharp;
using Svg;
using Svg.Skia;
using System.Drawing;
using WebDoorCreator.Data.Services;
#if false
using SkiaSharp;
using Svg.Skia;
#endif
namespace WebDoorCreator.API.Controllers
{
@@ -31,6 +37,7 @@ namespace WebDoorCreator.API.Controllers
return "OK";
}
[HttpGet("GetImage.png")]
public async Task<IActionResult> GetImagePng(int DoorId)
{
@@ -38,10 +45,27 @@ namespace WebDoorCreator.API.Controllers
string svgContent = await QDataServ.DoorGetLastSvg(DoorId);
if (!string.IsNullOrEmpty(svgContent))
{
var mySvg = SvgDocument.FromSvg<SvgDocument>(svgContent);
//result = System.Text.Encoding.UTF8.GetBytes(svgContent);
var myBmp = mySvg.Draw();
result = ImageToByte2(myBmp);
using (var svg = new SKSvg())
{
if (svg.FromSvg(svgContent) is { })
{
using (var stream = new MemoryStream())
{
svg.Picture?.ToImage(stream, SKColors.Empty, SKEncodedImageFormat.Png, 100, 1f, 1f, SKColorType.Rgba8888, SKAlphaType.Unpremul, SKColorSpace.CreateSrgb());
result = stream.ToArray();
}
}
}
#if false
var mySvg = SvgDocument.FromSvg<SvgDocument>(svgContent);
//result = System.Text.Encoding.UTF8.GetBytes(svgContent);
var myBmp = mySvg.Draw();
using (var stream = new MemoryStream())
{
img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
result= stream.ToArray();
}
#endif
}
return File(result, "image/png");
}
@@ -72,14 +96,6 @@ namespace WebDoorCreator.API.Controllers
#region Private Methods
private byte[] ImageToByte2(Image img)
{
using (var stream = new MemoryStream())
{
img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
return stream.ToArray();
}
}
#endregion Private Methods