Kaptcha生成图片验证码

傷城~ 2023-01-02 06:22 504阅读 0赞

Kaptcha简介

kaptcha 是一个很有用的验证码生成工具。由于它是可配置的,有了它,你能够生成各种样式的验证码。
Kaptcha 是一个可高度配置的实用验证码生成工具,可自由配置的选项如:

  • 验证码的字体
  • 验证码字体的大小
  • 验证码字体的字体颜色
  • 验证码内容的范围(数字,字母,中文汉字!)
  • 验证码图片的大小,边框,边框粗细,边框颜色
  • 验证码的干扰线
  • 验证码的样式(鱼眼样式、3D、普通模糊、…)

用法

  1. 前往官网http://code.google.com/p/kaptcha/下载jar包。
  2. 在pom.xml中导入


    com.google.code.kaptcha
    kaptcha
    2.3

或者

  1. <dependency>
  2. <groupId>com.github.penggle</groupId>
  3. <artifactId>kaptcha</artifactId>
  4. <version>2.3.2</version>
  5. </dependency>

主要代码

CaptchaConfig.java

  1. package online.xybh.framework.config;
  2. import com.google.code.kaptcha.impl.DefaultKaptcha;
  3. import com.google.code.kaptcha.util.Config;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. import java.util.Properties;
  7. import static com.google.code.kaptcha.Constants.*;
  8. /** * @Author: xybh * @Description: * @Date: Created in 16:23 2021/1/4 * @Modified: */
  9. @Configuration
  10. public class CaptchaConfig {
  11. @Bean(name = "captchaProducer")
  12. public DefaultKaptcha getKaptchaBean() {
  13. DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
  14. Properties properties = new Properties();
  15. // 是否有边框 默认为true 我们可以设置为yes或no
  16. properties.setProperty(KAPTCHA_BORDER, "yes");
  17. // 验证码文本字符颜色 默认为Color.BLACK
  18. properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue");
  19. // 验证码图片宽度 默认为200
  20. properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160");
  21. // 验证码图片高度 默认为50
  22. properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60");
  23. // 验证码文本字符大小 默认为40
  24. properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38");
  25. // 验证码存入session的键
  26. properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode");
  27. // 验证码文本字符长度 默认为5
  28. properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");
  29. // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
  30. properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");
  31. // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy
  32. properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy");
  33. Config config = new Config(properties);
  34. defaultKaptcha.setConfig(config);
  35. return defaultKaptcha;
  36. }
  37. }

CaptchaController.java

  1. package online.xybh.web.controller.common;
  2. import com.google.code.kaptcha.Producer;
  3. import org.springframework.web.bind.annotation.GetMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5. import org.springframework.web.servlet.ModelAndView;
  6. import javax.annotation.Resource;
  7. import javax.imageio.ImageIO;
  8. import javax.servlet.ServletOutputStream;
  9. import javax.servlet.http.HttpServletResponse;
  10. import java.awt.image.BufferedImage;
  11. import java.io.IOException;
  12. /** * @Author: xybh * @Description: 验证码接口 * @Date: Created in 16:00 2021/1/4 * @Modified: */
  13. @RestController
  14. public class CaptchaController {
  15. @Resource(name = "captchaProducer")
  16. private Producer captchaProducer;
  17. @GetMapping("/captchaImage")
  18. public ModelAndView getCode(HttpServletResponse response) throws IOException {
  19. response.setDateHeader("Expires", 0);
  20. // Set standard HTTP/1.1 no-cache headers.
  21. response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
  22. // Set IE extended HTTP/1.1 no-cache headers (use addHeader).
  23. response.addHeader("Cache-Control", "post-check=0, pre-check=0");
  24. // Set standard HTTP/1.0 no-cache header.
  25. response.setHeader("Pragma", "no-cache");
  26. // return a jpeg
  27. response.setContentType("image/jpeg");
  28. // 生成文本内容
  29. String text = captchaProducer.createText();
  30. // 生成图片
  31. BufferedImage image = captchaProducer.createImage(text);
  32. ServletOutputStream out = response.getOutputStream();
  33. ImageIO.write(image, "jpg", out);
  34. out.flush();
  35. out.close();
  36. return null;
  37. }
  38. }

页面效果

地址栏输入:localhost:8080/captchaImage
生成验证码

发表评论

表情:
评论列表 (有 0 条评论,504人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Kaptcha生成图片验证

    Kaptcha简介 kaptcha 是一个很有用的验证码生成工具。由于它是可配置的,有了它,你能够生成各种样式的验证码。 Kaptcha 是一个可高度配置的实用验证码