登录之图片验证码生成检验

旧城等待, 2023-02-22 07:49 53阅读 0赞
  1. <dependency>
  2. <groupId>net.pusuo</groupId>
  3. <artifactId>patchca</artifactId>
  4. <version>0.5.0</version>
  5. <scope>compile</scope>
  6. </dependency>
  7. import org.apache.commons.codec.binary.Base64;
  8. import org.patchca.background.BackgroundFactory;
  9. import org.patchca.color.SingleColorFactory;
  10. import org.patchca.filter.predefined.CurvesRippleFilterFactory;
  11. import org.patchca.service.Captcha;
  12. import org.patchca.service.ConfigurableCaptchaService;
  13. import org.patchca.word.RandomWordFactory;
  14. import org.springframework.boot.autoconfigure.SpringBootApplication;
  15. import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
  16. import javax.imageio.ImageIO;
  17. import java.awt.*;
  18. import java.awt.image.BufferedImage;
  19. import java.io.ByteArrayOutputStream;
  20. import java.io.IOException;
  21. /** * 启动程序 */
  22. @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
  23. public class Application
  24. {
  25. private static final ConfigurableCaptchaService cs = new ConfigurableCaptchaService();
  26. static {
  27. //设置字体颜色
  28. cs.setColorFactory(new SingleColorFactory(new Color(139, 83, 246)));
  29. cs.setFilterFactory(new CurvesRippleFilterFactory(cs.getColorFactory()));
  30. //设置字体颜色
  31. cs.setWidth(130);
  32. cs.setHeight(60);
  33. RandomWordFactory randomWordFactory = new RandomWordFactory();
  34. randomWordFactory.setMaxLength(4);
  35. randomWordFactory.setMinLength(4);
  36. cs.setWordFactory(randomWordFactory);
  37. //设置背景颜色
  38. cs.setBackgroundFactory( new BackgroundFactory() {
  39. @Override
  40. public void fillBackground(BufferedImage image) {
  41. Graphics graphics = image.getGraphics();
  42. int imgWidth = image.getWidth();
  43. int imgHeight = image.getHeight();
  44. graphics.setColor(new Color(44, 44, 44));
  45. graphics.fillRect(0, 0, imgWidth, imgHeight);
  46. //可以设置 噪点 干扰线。。。。
  47. }
  48. });
  49. }
  50. public static void main(String[] args) throws IOException {
  51. Captcha captcha = cs.getCaptcha();
  52. ByteArrayOutputStream outputStream = null;
  53. outputStream = new ByteArrayOutputStream();
  54. String msgId = captcha.getChallenge();
  55. ImageIO.write(captcha.getImage(), "png", outputStream);
  56. String images = "data:image/jpg;base64," + Base64.encodeBase64String(outputStream.toByteArray());
  57. //图片编码
  58. System.out.println(images);
  59. //图片校验用id
  60. System.out.println(msgId);
  61. }
  62. }

测试

  1. // 将 data 换成 images 输出值,就可以看到了
  2. <div class="col-sm-3"> <img class="googleQrcode" style="width: 100px" src="data"></div>

发表评论

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

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

相关阅读

    相关 手把手教你验证检验登录

    在网站实际应用过程中,为了防止网站登录接口被机器人轻易地使用,产生一些没有意义的用户数据,所以,采用验证码进行一定程度上的拦截,当然,我们采用的还是一个数字与字母结合的图片验证

    相关 web登录验证生成

    目的:实现在登录表单验证码的生成 声明:我是参考别人的例子,代码大部分也是引用的 原理:是在要显示验证码的地方用<img>,它的src指向了另一个生成验证码的jsp页面(用

    相关 登录图片验证

    页面刷新时,自动发送获取验证码到服务端 输入验证码登录,登录成功返回token 通过token获取用户详情,跳转主页 //获取验证码图片 @GetMappi

    相关 生成图片验证

    问题描述 在项目中遇到有人恶意拉取图片资源,无限刷资源,导致阿里图片服务器流量暴涨(钱遭不住),使得带宽一直处于上限,正常用户不能好的访问。 解决办法 这个功能设