LazyCaptcha如何自定义随机验证码和字体
发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,这篇文章将为大家详细讲解有关LazyCaptcha如何自定义随机验证码和字体,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。介绍LazyCaptcha是仿EasyCa
千家信息网最后更新 2025年11月15日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安全错误
数据库的锁怎样保障安全
正联网络技术公司招聘
三级数据库技术需要二级证吗
邢台网络安全宣传公园
软件开发项目提成
总体国家安全观有网络安全吗
怎样使用数据库
互联网是科技创新的什么
湖北服务器虚拟化定制云空间
许勤 人才 网络安全
华为德科软件开发
网络安全管理员怎么样
数据库安全与防护
软件开发费用明细清单
云南玉溪网络安全宣传
原神手机端转服务器
特种设备应用大数据库
苏州吹塑模具制造管理软件开发
华为网络技术找工作
无锡服务器emc测试
二级分销系统软件开发公司
无视违法的服务器
东莞哪里招聘网络安全工程师
公安内部网络安全要求
数据库的数值怎么求和
隐藏服务器ip地址
网络安全讲话稿
网络安全小知识小常识
安徽3d相机软件开发
广州工商银行软件开发部怎么样
qt数据库文档检索软件开发