2024-11-04 11:03:25 +08:00

72 lines
1.9 KiB
C#

using System;
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()
{
string wp = "123";
try
{
string generatedCaptchaCode = GenerateRandomCode(4); // 生成4位随机字符
int width = 100, height = 40;
using (var bitmap = new SKBitmap(width, height))
{
wp = "111";
using (var canvas = new SKCanvas(bitmap))
{
wp = "333";
canvas.Clear(SKColors.White);
using (var paint = new SKPaint())
{
paint.Color = SKColors.Black;
paint.TextSize = 20;
paint.IsAntialias = true;
canvas.DrawText(generatedCaptchaCode, 10, 30, paint);
}
}
wp = "222";
using (var image = SKImage.FromBitmap(bitmap))
using (var data = image.Encode(SKEncodedImageFormat.Png, 100))
using (var ms = new MemoryStream())
{
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);
}
}
// 生成随机字符
private string GenerateRandomCode(int length)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ012345689";
Random random = new Random();
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
}
}