Skip to content

Java图形验证码,支持gif、中文、算术等类型,效果展示如下

验证码验证码验证码验证码验证码验证码

算术类型:

验证码验证码验证码

中文类型:

验证码验证码验证码

内置字体:

验证码验证码验证码

依赖引入

xml
<dependency>
    <groupId>com.pig4cloud.plugin</groupId>
    <artifactId>captcha-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>

基本使用

在SpringBoot项目中一般生成图片后,转换成base64格式的字符串,前端直接在img标签的src设置返回的base64字符串即可展示图片,下面展示算数类型的验证码是如何生成的。

java
@Slf4j
@RestController
@RequestMapping("/aoi/captcha")
public class CaptchaController {

    @GetMapping
    public String getCode() {
        SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
        String verCode = specCaptcha.text().toLowerCase();
        log.info("生成的验证码结果为:{},在项目中应该将结果保存到Redis中", verCode);
        
        // 将base64返回给前端
        return specCaptcha.toBase64();

    }
}

自定义验证码类型、字体

java
@GetMapping
public String getCode() throws IOException, FontFormatException {
    SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
    String verCode = specCaptcha.text().toLowerCase();
    log.info("生成的验证码结果为:{},在项目中应该将结果保存到Redis中", verCode);
    // 设置字体
    specCaptcha.setFont(Captcha.FONT_1);  // 有默认字体,可以不用设置
    // 设置类型,纯数字、纯字母、字母数字混合
    specCaptcha.setCharType(Captcha.TYPE_ONLY_NUMBER);
    // 将base64返回给前端
    return specCaptcha.toBase64();
}

验证码字符类型

类型描述
TYPE_DEFAULT数字和字母混合
TYPE_ONLY_NUMBER纯数字
TYPE_ONLY_CHAR纯字母
TYPE_ONLY_UPPER纯大写字母
TYPE_ONLY_LOWER纯小写字母
TYPE_NUM_AND_UPPER数字和大写字母

内置字体

字体效果
Captcha.FONT_1img
Captcha.FONT_2img
Captcha.FONT_3img
Captcha.FONT_4img
Captcha.FONT_5img
Captcha.FONT_6img
Captcha.FONT_7img
Captcha.FONT_8img
Captcha.FONT_9img
Captcha.FONT_10img

生成数字计算验证码

java
@GetMapping
public String getCode() {
    ArithmeticCaptcha captcha = new ArithmeticCaptcha(130, 48);
    captcha.setLen(3);  // 几位数运算,默认是两位
    captcha.getArithmeticString();  // 获取运算的公式:3+2=?
    String code = captcha.text();// 获取运算的结果:5
    log.info("生成的验证码结果为:{},在项目中应该将结果保存到Redis中", code);
    // 将base64返回给前端
    return captcha.toBase64();
}