Java图形验证码工具,支持gif(动图)、中文、算术等类型,可用于Java Web、JavaSE等项目。
- <dependency>
- <groupId>com.github.whvcsegroupId>
- <artifactId>easy-captchaartifactId>
- <version>1.6.2version>
- dependency>
- @GetMapping("/captcha123")
- public void captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- // 设置请求头为输出图片类型
- response.setContentType("image/gif");
- response.setHeader("Pragma", "No-cache");
- response.setHeader("Cache-Control", "no-cache");
- response.setDateHeader("Expires", 0);
-
- // 三个参数分别为宽、高、位数
- SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
- // 设置字体(有默认字体,可以不用设置)
- specCaptcha.setFont(new Font("Verdana", Font.PLAIN, 32));
- // 设置类型,字母数字混合
- specCaptcha.setCharType(Captcha.TYPE_DEFAULT);
- // 获取验证码内容
- String code = specCaptcha.text().toLowerCase()
- // 输出图片流
- specCaptcha.out(response.getOutputStream());
- }

- @RequestMapping("/captcha123")
- public void captcha2(HttpServletRequest request, HttpServletResponse response) throws Exception {
- // 设置请求头为输出图片类型
- response.setContentType("image/gif");
- response.setHeader("Pragma", "No-cache");
- response.setHeader("Cache-Control", "no-cache");
- response.setDateHeader("Expires", 0);
- // 三个参数分别为宽、高、位数
- GifCaptcha gifCaptcha = new GifCaptcha(130,48,4);
- // 获取验证码
- String code = gifCaptcha.text().toLowerCase();
- // 输出图片流
- gifCaptcha.out(response.getOutputStream());
- }

- @RequestMapping("/captcha123")
- public void captcha2(HttpServletRequest request, HttpServletResponse response) throws Exception {
- // 设置请求头为输出图片类型
- response.setContentType("image/gif");
- response.setHeader("Pragma", "No-cache");
- response.setHeader("Cache-Control", "no-cache");
- response.setDateHeader("Expires", 0);
- // 三个参数分别为宽、高、位数
- ChineseCaptcha chineseCaptchaAbstract = new ChineseCaptcha(130,28,4);
- // 获取验证码
- String code = chineseCaptchaAbstract.text().toLowerCase();
- // 输出图片流
- chineseCaptchaAbstract.out(response.getOutputStream());
- }
![]()
- @RequestMapping("/captcha123")
- public void captcha2(HttpServletRequest request, HttpServletResponse response) throws Exception {
- // 设置请求头为输出图片类型
- response.setContentType("image/gif");
- response.setHeader("Pragma", "No-cache");
- response.setHeader("Cache-Control", "no-cache");
- response.setDateHeader("Expires", 0);
- // 三个参数分别为宽、高、位数
- ChineseGifCaptcha chineseGifCaptchaAbstract = new ChineseGifCaptcha(130,28,4);
- // 获取验证码
- String code = chineseGifCaptchaAbstract.text().toLowerCase();
- // 输出图片流
- chineseGifCaptchaAbstract.out(response.getOutputStream());
- }

- @RequestMapping("/captcha123")
- public void captcha2(HttpServletRequest request, HttpServletResponse response) throws Exception {
- // 设置请求头为输出图片类型
- response.setContentType("image/gif");
- response.setHeader("Pragma", "No-cache");
- response.setHeader("Cache-Control", "no-cache");
- response.setDateHeader("Expires", 0);
- // 三个参数分别为宽、高、位数
- ArithmeticCaptcha arithmeticCaptcha = new ArithmeticCaptcha(130 , 28 , 4);
- // 获取验证码
- String code = arithmeticCaptcha.text().toLowerCase();
- // 输出图片流
- arithmeticCaptcha.out(response.getOutputStream());
- }
![]()
| 类型 | 描述 |
|---|---|
| TYPE_DEFAULT | 数字和字母混合 |
| TYPE_ONLY_NUMBER | 纯数字 |
| TYPE_ONLY_CHAR | 纯字母 |
| TYPE_ONLY_UPPER | 纯大写字母 |
| TYPE_ONLY_LOWER | 纯小写字母 |
| TYPE_NUM_AND_UPPER | 数字和大写字母 |
- SpecCaptcha captcha = new SpecCaptcha(130, 48, 5);
- captcha.setCharType(Captcha.TYPE_ONLY_NUMBER);
| 字体 | 效果 |
|---|---|
| Captcha.FONT_1 |
|
| Captcha.FONT_2 |
|
| Captcha.FONT_3 |
|
| Captcha.FONT_4 |
|
| Captcha.FONT_5 |
|
| Captcha.FONT_6 |
|
| Captcha.FONT_7 |
|
| Captcha.FONT_8 |
|
| Captcha.FONT_9 |
|
| Captcha.FONT_10 |
|
- SpecCaptcha captcha = new SpecCaptcha(130, 48, 5);
-
- // 设置内置字体
- captcha.setFont(Captcha.FONT_1);
-
- // 设置系统字体
- captcha.setFont(new Font("楷体", Font.PLAIN, 28));
- FileOutputStream outputStream = new FileOutputStream(new File("C:/captcha.png"))
- SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
- specCaptcha.out(outputStream);