From f7cf1727c923b5bdb0a473c4be4306b3cee21998 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 22 May 2023 17:55:48 +0200 Subject: [PATCH] Aggiunta in API export doorImage (SVG+PNG) --- .../Controllers/DoorImageController.cs | 75 +++++++++++++++++++ WebDoorCreator.API/WebDoorCreator.API.csproj | 1 + 2 files changed, 76 insertions(+) create mode 100644 WebDoorCreator.API/Controllers/DoorImageController.cs diff --git a/WebDoorCreator.API/Controllers/DoorImageController.cs b/WebDoorCreator.API/Controllers/DoorImageController.cs new file mode 100644 index 0000000..bbc74f8 --- /dev/null +++ b/WebDoorCreator.API/Controllers/DoorImageController.cs @@ -0,0 +1,75 @@ +using Microsoft.AspNetCore.Mvc; +using NLog; +using Svg; +using System.Data.SqlTypes; +using System.Drawing; +using WebDoorCreator.Data.Services; + +namespace WebDoorCreator.API.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class DoorImageController : ControllerBase + { + #region Public Constructors + + public DoorImageController(IConfiguration configuration, QueueDataService DataService) + { + Log.Info("Starting DoorImageController"); + _configuration = configuration; + QDataServ = DataService; + Log.Info("Avviato DoorImageController"); + } + + #endregion Public Constructors + + #region Public Methods + + [HttpGet("GetImage.png")] + public async Task GetImagePng(int DoorId) + { + byte[] result= new byte[0]; + string svgContent = await QDataServ.DoorGetLastSvg(DoorId); + if (!string.IsNullOrEmpty(svgContent)) + { + var mySvg = SvgDocument.FromSvg(svgContent); + //result = System.Text.Encoding.UTF8.GetBytes(svgContent); + var myBmp = mySvg.Draw(); + result = ImageToByte2(myBmp); + } + return File(result, "image/png"); + } + + [HttpGet("GetImage.svg")] + public async Task GetImageSvg(int DoorId) + { + string svgContent = await QDataServ.DoorGetLastSvg(DoorId); + var result = System.Text.Encoding.UTF8.GetBytes(svgContent); + return File(result, "image/svg+xml"); + } + + #endregion Public Methods + + #region Private Fields + + private static IConfiguration _configuration = null!; + private static Logger Log = LogManager.GetCurrentClassLogger(); + + #endregion Private Fields + + #region Private Properties + + private QueueDataService QDataServ { get; set; } = null!; + + private byte[] ImageToByte2(Image img) + { + using (var stream = new MemoryStream()) + { + img.Save(stream, System.Drawing.Imaging.ImageFormat.Png); + return stream.ToArray(); + } + } + + #endregion Private Properties + } +} \ No newline at end of file diff --git a/WebDoorCreator.API/WebDoorCreator.API.csproj b/WebDoorCreator.API/WebDoorCreator.API.csproj index 0f32449..7e41f55 100644 --- a/WebDoorCreator.API/WebDoorCreator.API.csproj +++ b/WebDoorCreator.API/WebDoorCreator.API.csproj @@ -24,6 +24,7 @@ +