后端生成图片验证码,Kotlin生成图片验证码,Java生成图片验证码,图片验证码的生成和校验
后端生成图片验证码注:以下代码主要使用kotlin进行编写,kotlin可兼容java,可以直接使用。IDEA也支持将java与kotlin代码进行互相转换。1、引入依赖:Gradle(若你使用的是gradle依赖管理,使用这个):implementation("com.github.penggle:kaptcha:2.3.2")Maven(若你使用的maven依赖管理,使用这个):<dep
·
后端生成图片验证码
注:以下代码主要使用kotlin进行编写,kotlin可兼容java,可以直接使用。IDEA也支持将java与kotlin代码进行互相转换。
1、引入依赖:
Gradle(若你使用的是gradle依赖管理,使用这个):
implementation("com.github.penggle:kaptcha:2.3.2")
Maven(若你使用的maven依赖管理,使用这个):
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
若未用依赖管理工具,则可将maven仓库对应的依赖jar包拉下导入lib。
2、配置类(和配置文件2选1即可)
@Configuration
class KaptchaConfig {
@Bean
fun producer(): Producer {
val properties = Properties()
//图片边框
properties["kaptcha.border"] = "no"
//图片中有几位字符
properties["kaptcha.textproducer.char.length"] = "4"
// 图片长宽
properties["kaptcha.image.height"] = "50"
properties["kaptcha.image.width"] = "100"
//图片显示样式
properties["kaptcha.obscurificator.impl"] = "com.google.code.kaptcha.impl.WaterRipple"
//字体颜色
properties["kaptcha.textproducer.font.color"] = "blue"
//字体大小
properties["kaptcha.textproducer.font.size"] = "40"
//干扰 可选参数com.google.code.kaptcha.impl.NoNoise、com.google.code.kaptcha.impl.DefaultNoise;
properties["kaptcha.noise.impl"] = "com.google.code.kaptcha.impl.DefaultNoise"
properties["kaptcha.noise.color"] = "255,96,0"
//排除b、g、i、l、o、q、s、z,1、0、9等比较难判断的字母和数字
properties["kaptcha.textproducer.char.string"] = "acdefhkmnprtwxy2345678"
val config = Config(properties)
return config.producerImpl
}
}
3、配置文件(和配置类2选一即可)
kaptcha:
# 边框
border: "no"
textproducer:
char:
# 图片中有几位字符
length: 4
# 有哪些字符
string: acdefhkmnprtwxy2345678
font:
# 字体颜色
color: blue
# 字体大小
size: 40
noise:
# 干扰项 com.google.code.kaptcha.impl.NoNoise、com.google.code.kaptcha.impl.DefaultNoise
impl: com.google.code.kaptcha.impl.DefaultNoise
color: 255,96,0
image:
# 高
height: 50
# 宽
width: 100
obscurificator:
# 图片显示样式
impl: com.google.code.kaptcha.impl.WaterRipple
4、使用(以下是kotlin的写法,java换成对应的类注入即可)
@Autowired
private lateinit var producer: Producer
fun getPicVeriCode(): String {
// 随机获取内容
val verificationCode = producer.createText()
val verificationPic = generatePicVerification(verificationCode)
// 之后可以将验证码放入redis,设置过期时间为 60s,之后进行验证码校验
return verificationPic
}
// 这里生成的base64放入img标签可直接展示。
fun generatePicVerification(verificationCode: String): String {
// 生成对应的图片
val bi = producer.createImage(verificationCode)
val outputStream = ByteArrayOutputStream()
ImageIO.write(bi, "jpeg", outputStream)
val base64Image = "data:image/jpeg;base64," + Base64.encodeBase64String(outputStream.toByteArray())
return "<img src='$base64Image'/>"
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)