惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
C
Check Point Blog
B
Blog RSS Feed
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
A
About on SuperTechFans
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 聂微东
阮一峰的网络日志
阮一峰的网络日志
人人都是产品经理
人人都是产品经理
小众软件
小众软件
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
GbyAI
GbyAI
The Cloudflare Blog
博客园 - 叶小钗
S
SegmentFault 最新的问题
博客园 - Franky
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
B
Blog
Jina AI
Jina AI

牛牛技术客栈

设计模式-备忘录模式 - OXOXTECH 牛牛技术客栈 设计模式-中介者模式 - OXOXTECH 牛牛技术客栈 Linux【Ubuntu】修改ssh默认端口 - OXOXTECH 牛牛技术客栈 设计模式-迭代器模式 - OXOXTECH 牛牛技术客栈 scheduled定时任务的三种基本实现方式 - OXOXTECH 牛牛技术客栈 Apriori - 基于关联规则的推荐算法(三) - OXOXTECH 牛牛技术客栈 Apriori - 基于关联规则的推荐算法(二) - OXOXTECH 牛牛技术客栈 Apriori - 基于关联规则的推荐算法(一) - OXOXTECH 牛牛技术客栈 基于JavaFX的桌面端网络调试工具 - OXOXTECH 牛牛技术客栈 Golang Channel的原理介绍 - OXOXTECH 牛牛技术客栈 Go语言Map的原理分析 - OXOXTECH 牛牛技术客栈 Go语言错误处理(panic)的最佳实践 - OXOXTECH 牛牛技术客栈 设计模式-解释器模式 - OXOXTECH 牛牛技术客栈 Redis报错Redis is configured to save RDB snapshots, but it's currently unable to persist to disk. go-webpbin库在Linux报错failed to encode image to WebP: exit status 1.......的问题 exe4j 打包加密的jar - OXOXTECH 牛牛技术客栈 澳门一天游:一日尽享东方与西方的交融之美 - OXOXTECH 牛牛技术客栈 设计模式-命令模式 - OXOXTECH 牛牛技术客栈 别再自己瞎写工具类了,SpringBoot内置工具类应有尽有 - OXOXTECH 牛牛技术客栈 中山一日游 - OXOXTECH 牛牛技术客栈 设计模式-责任链模式 - OXOXTECH 牛牛技术客栈 起舞吧,齐舞吧 - OXOXTECH 牛牛技术客栈 设计模式-组合模式 - OXOXTECH 牛牛技术客栈 Go语言Web开发|GoFrame框架入门笔记 - OXOXTECH 牛牛技术客栈 Java打包exe教程 - OXOXTECH 牛牛技术客栈 设计模式-代理模式 - OXOXTECH 牛牛技术客栈 MySQL存储过程的优缺点有哪些? - OXOXTECH 牛牛技术客栈 前端渲染优化有哪些? - OXOXTECH 牛牛技术客栈 HTTP状态码及其含义 - OXOXTECH 牛牛技术客栈 从浏览器地址栏输入url到显示页面的步骤 - OXOXTECH 牛牛技术客栈
Go生成图形验证码示例 - OXOXTECH 牛牛技术客栈
Mr.Potato · 2024-12-16 · via 牛牛技术客栈

Mr.Potato Go Golang, GoFrame

拉取第三方库

首先可以使用第三方库来生成图形验证码,一个常用的库是base64Captcha,打开项目根目录终端把它拉取下来,命令是:

go get github.com/mojocn/base64Captcha

成功拉取如图所示:

202412061445272106.webp

使用示例

小伙伴们可以直接使用,自行调整验证码生成器的参数以达到你想要的验证码,然后直接生成即可,具体可以看以下代码:

	driver := base64Captcha.NewDriverDigit(
		100, // 宽度
		200, // 高度
		6,   // 位数
		1,   // 噪音比例
		10,  // 干扰线数
	)
	captcha := base64Captcha.NewCaptcha(driver, base64Captcha.DefaultMemStore)
	id, base64, answer, err := captcha.Generate()
	if err != nil {
		return nil, err
	}
	err = g.Redis().SetEX(ctx, consts.CODE_LOGIN.GetCacheName()+id, answer, 5*60)
	if err != nil {
		return nil, err
	}
	res = &v1.GetCaptchaImgRes{Response: &utility.Response{
		Code:    consts.SUCCESS.Code,
		Message: consts.SUCCESS.Message,
		Data:    &output.Captcha{Uuid: id, Base64: base64},
	}}

测试结果

{
  "code": 200,
  "message": "返回成功!",
  "data": {
    "uuid": "hJmVS1UqXtVdm6rFEsze",
    "base64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABkBAMAAAAxqGI4AAAAIVBMVEUAAAASXCY8hlAeaDKP2aMRWyWK1J4hazU/iVM0fkgJUx0g57qlAAAAAXRSTlMAQObYZgAAA4VJREFUeJzsWUtu3ToM1cHLAzIkgfeALqNAN5BBNtBB99Nhl11I/Ii0fC05CYwGNUfxvTKPDj+H0k257ba/1F4uwHh6vQDkEia33fZZDVeAMF0AMmUyW4B3x4KIeLKEmd8DQ8TMk3Cimq8hOhn8hjADQVsCDVl9OoUDxTiOFguTtkr+mL1h7jHu8WAr1EJGLTkBZPKiRKghrO6o5h5tSzAQ2eGjTerni5UpKWu5F+9g+wgxp0QpWWxMlhIoi1p9QV//z7Coe0YuIcviOSXo3QS8vhSvfw9ejhwEcpGIv9RXO5PiTCx0voi5fn9WLIIuqK9NBnIRQEDezASe//B1cx+ogBvAWkvtMIGXU9mQS0yIWTYyF8eBCbyCwy7Ne2dS2wrU5HdRIaLL3sGBiTkHyNSghoqwoo4luUEtJTZOiYnz1D/a8lZhol2LTEAqdj7jQoN3QGMiCTF1XKQi9Rh3ZR2vgJkJpBNFflfjhc7Eg6Qd/4BJaHcspl7WP0M1PzKhzISduD9gbcxpRf36KZqfmER3rtDy3CtygYll7jm4URylsnEHAwkZmmFwaom0K0mqMbGjD7K6rRCpcQmIaVsqiqrFnNQg5GSBSGSCzbacik4wLr2FehBXQOKijdypbGkVIObdcrLCJPfSkMTERLYQxCWVxQGRfB7ZhqtEJl5Wrr9tPM6LayMKg0R4TL6Qdzl8/lfgBRAtH32iAcRd1FbtpyY3WmhFaMz9afuGx+85nOVMf2X0zzBkiFDxqeTaFaiOtKB1IINrqbgaZZKQj2+kj6zAtaiArBdHTCy8tDPkQjh82Frbo7fOAhPi4Z4Rwq8NyHYHqI7DZJxjlMCEeTw8WGI5M4HOReYhh0dI22OHOa/ItcKkJUDFmdD6jSngpGJkP5q2zXJJjYvCBJw4Du0b+iG7McH2RoSWl/dezyXoygR7xzgmEDxe/wwOFlim68L+1Q5Uj5Ka+29fBw9r1e37fBD/xoTE2Q6T+a8l9VDdbz0PREqYDAPCvjyMmCQ8XhIPFjcmu+5wNGxYmayanY1HR/QARlvvZAOwD2JkZ1QwgMut9hyA7U1O7dubl8pFAu41+RYg2ivc/y1wjWb7nYV9GJfzYFWnB5Qf31vO2pCTv9L56DTIrv27ZZLsI3/e7Exu+xh7ugLk9ZJ/mV2A8afYJf8yuKTJrmBy22233XbbbZ/YfgcAAP//JzdKNxfYW60AAAAASUVORK5CYII="
  }
}

image.png