easy_captcha生成算术公式只要“十”和“X”

easy_captcha图形验证码算术规则替换

这款图形验证码有算术、英文数字、中文几种展示效果,我在使用了比较简单的算术类型后,发现会计算减法产生负数结果,让一些老眼昏花的用户体验不好,所以就重写下父类方法,把减法替换为加法。

maven引入依赖包

    <dependency>
        <groupId>com.github.whvcse</groupId>
        <artifactId>easy-captcha</artifactId>
        <version>1.6.2</version>
    </dependency>

自定义工具类CaptchaUtils

import com.wf.captcha.ArithmeticCaptcha;
import lombok.extern.slf4j.Slf4j;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

/**
 * easy-captcha图形验证码工具
 * 继承算术类型:仅保留加法、乘法
 */
@Slf4j
public class CaptchaUtils extends ArithmeticCaptcha {

    public CaptchaUtils(int width, int height) {
        super(width, height);
    }

    public String text() {
        //获取父类算术公式,将减法替为加法。
        String verifyCode = super.getArithmeticString().replaceAll("-", "+");
        //log.info("原公式{}", super.getArithmeticString());
        //log.info("新公式{}", verifyCode);
        //将已有的公式替换掉
        super.setArithmeticString(verifyCode);
        try {
            verifyCode = verifyCode.replaceAll("x", "*");
            ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");
            //重新计算并替换父类参数值
            super.chars = String.valueOf(jse.eval(verifyCode.substring(0, verifyCode.length() - 2)));
        } catch (ScriptException e) {
            log.error("图形验证码值计算异常", e);
        }
        return chars;
    }

}

实现类中使用

CaptchaUtils captcha = new CaptchaUtils(111, 36);
captcha.setLen(2);
String result = captcha.text().toLowerCase(Locale.ROOT);
log.info("图片=", captcha.toBase64());
log.info("值=", result );

效果

在这里插入图片描述在这里插入图片描述
代码能用就行,欢迎同行指正

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值