千家信息网

LazyCaptcha如何自定义随机验证码和字体

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关LazyCaptcha如何自定义随机验证码和字体,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。介绍LazyCaptcha是仿EasyCa
千家信息网最后更新 2026年11月03日LazyCaptcha如何自定义随机验证码和字体

这篇文章将为大家详细讲解有关LazyCaptcha如何自定义随机验证码和字体,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

介绍

LazyCaptcha是仿EasyCaptcha和SimpleCaptcha,基于.Net Standard 2.1的图形验证码模块。
目前Gitee 52star, 如果对您有帮助,请不吝啬点颗星????。

一. 自定义随机验证码(需要版本1.1.2)

这里随机是指CaptchaType随机,动静随机等等,你可以设置CaptchaOptions任意选项值。每次刷新验证码,效果如下:

我也不知道这种需求是否真实存在。

1. 自定义RandomCaptcha

/// /// 随机验证码/// public class RandomCaptcha : DefaultCaptcha{    private static readonly Random random = new();    private static readonly CaptchaType[] captchaTypes = Enum.GetValues();    public RandomCaptcha(IOptionsSnapshot options, IStorage storage) : base(options, storage)    {    }    ///     /// 更新选项    ///     ///     protected override void ChangeOptions(CaptchaOptions options)        // 随机验证码类型        options.CaptchaType = captchaTypes[random.Next(0, captchaTypes.Length)];        // 当是算数运算时,CodeLength是指运算数个数        if (options.CaptchaType.IsArithmetic())        {            options.CodeLength = 2;        }        else            options.CodeLength = 4;        // 如果包含中文时,使用kaiti字体,否则文字乱码        if (options.CaptchaType.ContainsChinese())            options.ImageOption.FontFamily = DefaultFontFamilys.Instance.Kaiti;            options.ImageOption.FontSize = 24;            options.ImageOption.FontFamily = DefaultFontFamilys.Instance.Actionj;        // 动静随机        options.ImageOption.Animation = random.Next(2) == 0;        // 干扰线随机        options.ImageOption.InterferenceLineCount = random.Next(1, 4);        // 气泡随机        options.ImageOption.BubbleCount = random.Next(1, 4);        // 其他选项...}

2. 注入RandomCaptcha

// 内存存储, 基于appsettings.json配置builder.Services.AddCaptcha(builder.Configuration);// 开启随机验证码builder.Services.Add(ServiceDescriptor.Scoped());

二. 自定义字体

使用KG HAPPY字体,效果如图:

1. 寻找字体

你可以通过fontspace找到自己喜爱的字体。

2. 将字体放入项目,并设置为嵌入资源。

当然也可以不作为嵌入资源,放到特定目录也是可以的,只要对下边ResourceFontFamilysFinder稍作修改即可。

3. 定义查找字体帮助类,示例使用ResourceFontFamilysFinder

public class ResourceFontFamilysFinder{    private static Lazy> _fontFamilies = new Lazy>(() =>    {        var fontFamilies = new List();        var assembly = Assembly.GetExecutingAssembly();        var names = assembly.GetManifestResourceNames();        if (names?.Length > 0 == true)        {            var fontCollection = new FontCollection();            foreach (var name in names)            {                if (!name.EndsWith("ttf")) continue;                fontFamilies.Add(fontCollection.Add(assembly.GetManifestResourceStream(name)));            }        }        return fontFamilies;    });    public static FontFamily Find(string name)        return _fontFamilies.Value.First(e => e.Name == name);    }}

4. 设置option

// 内存存储, 基于appsettings.json配置builder.Services.AddCaptcha(builder.Configuration, options =>{    // 自定义字体    options.ImageOption.FontSize = 28;    options.ImageOption.FontFamily = ResourceFontFamilysFinder.Find("KG HAPPY"); // 字体的名字在打开ttf文件时会显示});

关于"LazyCaptcha如何自定义随机验证码和字体"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

字体 验证 篇文章 帮助 内存 动静 效果 更多 资源 存储 运算 配置 不错 吝啬 实用 不作为 个数 乱码 内容 可以通过 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州万易互联网科技有限公司 深圳九邦互联网科技有限公司 科技互联网政务服务 金融科技与互联网金融 美国互联网科技 远信互联网科技 凡科互联网科技 远拓互联网科技 互联网科技logo设计 互联网科技革命什么开始 玉溪互联网科技怎么选 健康食品互联网创新科技园项目 乌鲁木齐新华智原互联网科技学校 群盈汇互联网科技有限公司 江苏互联网科技小贷 广州燕处互联网科技有限公司 吉林省码上互联网科技电话 互联网金融运营模式中的金融科技 北京军民互联网科技公司 第三届互联网大会安防黑科技 互联网科技工作委员会副主任毛军 互联网科技垄断 腾讯阿里互联网科技 成都狮子座互联网科技 互联网科技产业特征 互联网金融科技元年 本届互联网大会上的黑科技 易企秀互联网科技是做什么的 云鲸互联网络科技有限公司 江苏互联网智能科技产品出厂价
0