验证码低代码开发项目(java版)

前言

首先这个项目是完全基于java底层开发的,没有经过任何的框架渲染,目前项目中集成了junit测试框架,主要使用@Test注解。
注意: 建议使用最新版的junit测试框架

 		<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

示例:

1、png格式验证码

@Test
    public void getPngCaptcha() throws Exception{
        PngCaptcha captcha = new PngCaptcha();
        Properties properties = new Properties();
        Config config = new Config(properties);
        captcha.setConfig(config);
        String text = captcha.getText();
        System.out.println(text);
        BufferedImage image = captcha.RenderImage(text);
        captcha.write(new FileOutputStream(new File("路径+验证码命名")), image);
    }

效果:
在这里插入图片描述

2、 gif格式验证码:

@Test
    public void getGifCaptcha() throws Exception {
        Properties properties = new Properties();
        GifCaptcha captcha = new GifCaptcha();
        Config config = new Config(properties);
        captcha.setConfig(config);
        String text = captcha.getText();
        System.out.println(text);
        captcha.createGif(text);
        captcha.write(new FileOutputStream(new File("路径+验证码命名")), captcha.getImageBytes());
    }

效果:
在这里插入图片描述

内置功能

1、任意切换图片大小

两行配置代码可以实现改变验证码图片大小:

 properties.setProperty(CaptchaConstant.CAPTCHA_IMAGE_WIDTH, "300");
 properties.setProperty(CaptchaConstant.CAPTCHA_IMAGE_HEIGHT, "100");

效果:
在这里插入图片描述

2、切换字体需求(三种方法)

第一种:代码内置实现了字体配置(默认字体大小30)具体效果如上所示
第二种:自行添加内置字体(字体来源均已在下文提及

设置字体:

properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_FONT_NAMES, "Algerian,AlphabetSoup Tilt BT");

修改字体大小:

properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_FONT_SIZE, "36");

png格式效果:
在这里插入图片描述
gif格式效果:
在这里插入图片描述
第三种:将准备好的字体放在项目的根目录下的resource目录下
在这里插入图片描述

@Test
    public void getGifCaptcha() throws Exception {
        Properties properties = new Properties();
        GifCaptcha captcha = new GifCaptcha();
        Config config = new Config(properties);
        captcha.setConfig(config);
        String text = captcha.getText();
        // 注意这行代码
        captcha.setTextFont("CASTELAR.ttf", 36f);
        captcha.createGif(text);
        captcha.write(new FileOutputStream(new File("路径+验证码命名")), captcha.getImageBytes());
    }

效果:
在这里插入图片描述

3、干扰线,干扰圆

修改干扰线(默认干扰线数量为1)

 		 // 设置干扰线数量(取消则设置数量为0)
        properties.setProperty(CaptchaConstant.CAPTCHA_SHADE_NUMBER, "0");
        // 设置干扰线厚度(厚度默认为1)
        properties.setProperty(CaptchaConstant.CAPTCHA_SHADE_THICKNESS, "5");
        // 设置干扰圆数量(取消则设置数量为0)
        properties.setProperty(CaptchaConstant.CAPTCHA_NOISE_NUMBER, "0");

取消干扰线干扰圆效果:
在这里插入图片描述
设置干扰线干扰圆效果(效果自行设置):

		// 设置干扰线数量(取消则设置数量为0)
        properties.setProperty(CaptchaConstant.CAPTCHA_SHADE_NUMBER, "3");
        // 设置干扰线厚度(厚度默认为1)
        properties.setProperty(CaptchaConstant.CAPTCHA_SHADE_THICKNESS, "5");
        // 设置干扰圆数量(取消则设置数量为0)
        properties.setProperty(CaptchaConstant.CAPTCHA_NOISE_NUMBER, "5");

在这里插入图片描述

4、扭曲效果

不添加扭曲效果:

 // 添加扭曲效果(默认true)  
 properties.setProperty(CaptchaConstant.CAPTCHA_IMAGE_SHEAR_ADD, "no");

在这里插入图片描述
添加扭曲效果:

 		// 添加扭曲效果(默认true)
        properties.setProperty(CaptchaConstant.CAPTCHA_IMAGE_SHEAR_ADD, "yes");

在这里插入图片描述

5、设置验证码内容

设置内容长度:(默认为4位)

 		// 设置长度(默认四位)
        properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_LENGTH, "6");

在这里插入图片描述
设置内容格式:(内置10种内容格式)

	// 数字
    NUMBER(1, "NUMBER"),
    // 中文数字
    NUMBER_ZH(2, "NUMBER_ZH"),
    // 中文
    CHINESE(3, "CHINESE"),
    // 点击中文成语
    CHINESE_IDIOM(4, "CHINESE_IDIOM"),
    // 小写英文
    CHAR(5, "CHAR"),
    // 大写
    UPPER_CHAR(6, "UPPER_CHAR"),
    // 英文和中文混合
    STRING(7, "STRING"),
    //数字和大小写字符验证码
    UPPER_STRING(8, "UPPER_STRING"),
    // 算术
    ARITHMETIC(9, "ARITHMETIC"),
    // 中文算术
    ARITHMETIC_ZH(10, "ARITHMETIC_ZH");

示例:
1、数字

properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_TYPE, "NUMBER");

在这里插入图片描述

2、中文数字

		// 设置长度(默认四位)
        properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_LENGTH, "6");
        properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_TYPE, "NUMBER_ZH");

在这里插入图片描述

3、随机中文

properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_TYPE, "CHINESE");

在这里插入图片描述

4、中文成语

@Test
    public void getGifCaptcha() throws Exception {
        Properties properties = new Properties();
        GifCaptcha captcha = new GifCaptcha();
        // 注意这行代码
        properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_TYPE, "CHINESE_IDIOM");
        Config config = new Config(properties);
        captcha.setConfig(config);
        String text = captcha.getText();
        // 注意这行代码
        captcha.createGif(text.split(",")[1]);
        captcha.write(new FileOutputStream(new File("路径+验证码命名")), captcha.getImageBytes());
    }

在这里插入图片描述

6、算术

@Test
    public void getGifCaptcha() throws Exception {
        Properties properties = new Properties();
        GifCaptcha captcha = new GifCaptcha();
        // 这行
        properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_TYPE, "ARITHMETIC");
        Config config = new Config(properties);
        captcha.setConfig(config);
        String text = captcha.getText();
        System.out.println(text);
        // 这行
        int temp = text.indexOf("?");
        // 这行
        captcha.createGif(text.substring(0, temp));
        captcha.write(new FileOutputStream(new File("路径+验证码命名")), captcha.getImageBytes());
    }

在这里插入图片描述

7、中文算术

properties.setProperty(CaptchaConstant.CAPTCHA_TEXT_TYPE, "ARITHMETIC_ZH");

在这里插入图片描述

6、设置边框

设置无边框:

 properties.setProperty(CaptchaConstant.CAPTCHA_BORDER, "no");

在这里插入图片描述
设置边框厚度及颜色:

		properties.setProperty(CaptchaConstant.CAPTCHA_BORDER_THICKNESS, "5");
        properties.setProperty(CaptchaConstant.CAPTCHA_BORDER_COLOR, "0,0,0");

在这里插入图片描述

7、设置图片背景颜色

properties.setProperty(CaptchaConstant.CAPTCHA_BACKGROUND_COLOR, "0,0,0");

在这里插入图片描述

致谢

这个框架花费了我不少的心思,同时也参考了一些开源项目解决方案开源不易,感谢分享

项目概况

  • 已经对项目的基本逻辑进行了测试(尚未深入地进行测试)
  • 项目内置了Base64编码工具类,可以实现将验证码图片进行编码
  • 暂时未完善项目的IO流,没有集成前后端数据传输交互
  • 没有完善简化操作验证码流程
  • 后续会重构底层,添加滑动验证码和行为点击验证码

最后

项目的所有源码均已上传到码云,有需要者自行下载使用。
如果项目对你有所帮助,请动动你们的小手,给我一个小小的star,谢谢!

免责声明:

项目开发所使用的字体均来源于所使用电脑的windows10系统提供的内置字体,使用者可自行查看 **C:\Windows\Fonts**目录下的字体,或者是在网上下载喜欢的字体去更改项目内置的字体,后续如有发生任何字体侵权行为,与项目开发者无关,特此声明!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值