Admin.Core/src/platform/ZhonTai.Admin/Tools/Captcha/VerifyCodeHelper.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using SixLabors.Fonts;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Drawing.Processing;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using System;
using System.IO;
using System.Linq;
using System.Text;
using ZhonTai.Admin.Core.Attributes;
using ZhonTai.Admin.Core.Configs;

namespace ZhonTai.Admin.Tools.Captcha;

[SingleInstance]
public class VerifyCodeHelper
{
    private readonly AppConfig _appConfig;

    public VerifyCodeHelper(AppConfig appConfig)
    {
        _appConfig = appConfig;
    }

    private static string GenerateRandom(int length)
    {
        var chars = new StringBuilder();
        //验证码的字符集,去掉了一些容易混淆的字符
        char[] character = { '2', '3', '4', '5', '6', '8', '9', 'a', 'b', 'd', 'e', 'f', 'h', 'k', 'm', 'n', 'r', 'x', 'y', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'W', 'X', 'Y' };
        var rnd = new Random();
        //生成验证码字符串
        for (int i = 0; i < length; i++)
        {
            chars.Append(character[rnd.Next(character.Length)]);
        }
        return chars.ToString();
    }

    public byte[] Draw(out string code, int length = 4)
    {
        int width = 110;
        int height = 36;
        int fontSize = 22;

        //颜色列表,用于验证码、噪线、噪点
        Color[] colors = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue };
        //字体列表,用于验证码
        string[] fonts = _appConfig.VarifyCode.Fonts;

        var chars = GenerateRandom(length);
        code = chars;

        using var img = new Image<Rgba32>(width, height, Color.White);

        img.Mutate(ctx =>
        {
            var rnd = new Random();
            //画噪线
            for (int i = 0; i < 1; i++)
            {
后面还有 49 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。