using System.Text; using ImageMagick; using Kynareth.Models; using Microsoft.AspNetCore.Mvc; namespace Kynareth.Managers; public static partial class ImageManager { public static void Configure(IConfiguration configuration, IWebHostEnvironment appEnvironment) { ConfigureGeneration(configuration, appEnvironment); ConfigureManipulation(configuration, appEnvironment); } private static ObjectResult GetResult(int statusCode, object data) => new(data) { StatusCode = statusCode }; public static MagickImage WriteText(this MagickImage image, string text, PositionRect rect, MagickColor fontColor, Encoding encoding, double fontSize, string font = "Impact") { using var label = new MagickImage($"caption:{text}", new MagickReadSettings() { Width = rect.Width, Height = rect.Height, BackgroundColor = MagickColors.Transparent, FillColor = fontColor, TextGravity = Gravity.Center, FontPointsize = fontSize, Font = font, TextEncoding = encoding, StrokeColor = MagickColors.Black, StrokeWidth = 2 }); image.Composite(label, rect.X, rect.Y, CompositeOperator.Over); return image; } public static MagickImage WriteText(this MagickImage image, string text, PositionRect rect, MagickColor fontColor, Encoding encoding, string font = "Impact") { using var label = new MagickImage($"label:{text}", new MagickReadSettings() { Width = rect.Width, Height = rect.Height, BackgroundColor = MagickColors.Transparent, FillColor = fontColor, TextGravity = Gravity.Center, Font = font, TextEncoding = encoding, StrokeColor = MagickColors.Black, StrokeWidth = 2 }); image.Composite(label, rect.X, rect.Y, CompositeOperator.Over); return image; } }