using Microsoft.AspNetCore.Mvc; using NLog; using Svg; 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 // GET: api/Alive [HttpGet] public string Get() { return "OK"; } [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!; #endregion Private Properties #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 } }