From 61e8f98af849bb162073e792de40b5f92778098c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=82=9C=E7=BF=94?= <2307953404@qq.com> Date: Mon, 4 Nov 2024 11:03:25 +0800 Subject: [PATCH] zcm --- asg_form/Controllers/login.cs | 14 ++---- asg_form/Controllers/prerfunctions/Draw.cs | 56 ++++++++++++++-------- asg_form/Program.cs | 5 +- asg_form/asg_form.csproj | 5 ++ 4 files changed, 47 insertions(+), 33 deletions(-) diff --git a/asg_form/Controllers/login.cs b/asg_form/Controllers/login.cs index 18a5e7c..003b317 100644 --- a/asg_form/Controllers/login.cs +++ b/asg_form/Controllers/login.cs @@ -241,16 +241,12 @@ namespace asg_form.Controllers var captchaService = new CaptchaService(); var (captchaImage, captchaCode) = captchaService.GenerateCaptcha(); captchaNow=captchaCode; - /*var offTime = new DateTime(); + var offTime = new DateTime(); using (var db = new TestDbContext()) { + var query = db.T_captcha_check.AsQueryable(); - var currentDateTime = DateTime.Now; - var fiveMinutesAgo = currentDateTime.AddMinutes(-5); - var recordsToDelete = db.T_captcha_check - .Where(x => DateTime.TryParse(x.off_time,out offTime) && offTime < fiveMinutesAgo) - .ToList(); - db.T_captcha_check.RemoveRange(recordsToDelete); + var currentDateTime = DateTime.Now; int maxId = query.Max(n => n.id); var msg = new capData { @@ -260,8 +256,8 @@ namespace asg_form.Controllers }; db.Add(msg); db.SaveChanges(); - }*/ - return Ok(new { code = 200, captchaImage ,captchaCode}); + } + return Ok(new { code = 200, captchaImage}); } catch (Exception ex) { return Ok(new { code = 500, message = "服务器错误", ex }); diff --git a/asg_form/Controllers/prerfunctions/Draw.cs b/asg_form/Controllers/prerfunctions/Draw.cs index 042dca1..0f0a6c7 100644 --- a/asg_form/Controllers/prerfunctions/Draw.cs +++ b/asg_form/Controllers/prerfunctions/Draw.cs @@ -2,49 +2,63 @@ using System.Drawing; using System.Drawing.Imaging; using System.IO; +using SkiaSharp; +using System.IO; public class CaptchaService { public string generatedCaptchaCode; public int wrp = 0; // 生成验证码图像并返回Base64字符串 - public (string captchaImage, string captchaCode) GenerateCaptcha() + + +public (string captchaImage, string captchaCode) GenerateCaptcha() +{ + string wp = "123"; + try { - string wp = "123"; - try + string generatedCaptchaCode = GenerateRandomCode(4); // 生成4位随机字符 + int width = 100, height = 40; + + using (var bitmap = new SKBitmap(width, height)) { - System.AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true); - string generatedCaptchaCode = GenerateRandomCode(4); // 生成4位随机字符 - Bitmap bitmap = new Bitmap(100, 40); - wp = "122"; - using (Graphics g = Graphics.FromImage(bitmap)) + wp = "111"; + using (var canvas = new SKCanvas(bitmap)) { - g.Clear(Color.White); - using (Font font = new Font("Arial", 20)) + wp = "333"; + canvas.Clear(SKColors.White); + using (var paint = new SKPaint()) { - g.DrawString(generatedCaptchaCode, font, Brushes.Black, 10, 10); + paint.Color = SKColors.Black; + paint.TextSize = 20; + paint.IsAntialias = true; + canvas.DrawText(generatedCaptchaCode, 10, 30, paint); } } - wp = "233"; - using (MemoryStream ms = new MemoryStream()) + wp = "222"; + using (var image = SKImage.FromBitmap(bitmap)) + using (var data = image.Encode(SKEncodedImageFormat.Png, 100)) + using (var ms = new MemoryStream()) { - bitmap.Save(ms, ImageFormat.Png); + data.SaveTo(ms); string base64Image = Convert.ToBase64String(ms.ToArray()); return (base64Image, generatedCaptchaCode); } } - catch (Exception ex) - { - Console.WriteLine($"Error generating captcha: {ex.Message}"); - return (ex.Message, wp); - } } + catch (Exception ex) + { + Console.WriteLine($"Error generating captcha: {ex.Message}"); + return (ex.Message, wp); + } +} - // 生成随机字符 - private string GenerateRandomCode(int length) + +// 生成随机字符 +private string GenerateRandomCode(int length) { const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ012345689"; Random random = new Random(); diff --git a/asg_form/Program.cs b/asg_form/Program.cs index db70ec0..8b7f35e 100644 --- a/asg_form/Program.cs +++ b/asg_form/Program.cs @@ -80,8 +80,6 @@ options.AddDefaultPolicy(builder => builder.WithOrigins(urls) - - IServiceCollection services = builder.Services; @@ -160,7 +158,7 @@ app.UseKnife4UI(c => }); app.UseStaticFiles(); - +AppContext.SetSwitch("System.Drawing.EnableUnixSupport", true); //发布时服务器注册静态资源 @@ -242,4 +240,5 @@ new Thread(o => { IsBackground = true }.Start(); + app.Run(); \ No newline at end of file diff --git a/asg_form/asg_form.csproj b/asg_form/asg_form.csproj index 0c70322..eab0478 100644 --- a/asg_form/asg_form.csproj +++ b/asg_form/asg_form.csproj @@ -65,10 +65,15 @@ + + + + +