背景:今天生成的验证码图片遭嫌弃了,反馈说后端生成的验证码不好看,emmm,外貌协会。好吧,那我就修改一下,把灰色风格换成花里胡哨的彩色。
原来的验证码:
现在的验证码:
实现:生成验证码可以用这个Java库,引入坐标即可
<!-- 验证码 --> <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <exclusions> <exclusion> <artifactId>javax.servlet-api</artifactId> <groupId>javax.servlet</groupId> </exclusion> </exclusions> </dependency>
注入:控制层注入验证码生产者
@Resource(name = "captchaProducer") private Producer captchaProducer;
改造后的实现代码:
BufferedImage image = new BufferedImage(100,50,BufferedImage.TYPE_INT_RGB);String code = captchaProducer.createText(); System.out.println(code); Graphics graphics =image.getGraphics(); char[] cs = code.toCharArray(); graphics.fillRect(0,0, 100, 50); for(int i=0;i<=3;i++) { graphics.setColor(new Color(random.nextInt(256),random.nextInt(256),random.nextInt(256))); graphics.setFont(new Font("微软雅黑",Font.BOLD,30)); char c=cs[i]; graphics.drawString(" "+c, i*25, 30); } int max=random.nextInt(15); for(int i=0;i<max;i++) { graphics.setColor(new Color(random.nextInt(256),random.nextInt(256),random.nextInt(256))); graphics.drawLine(random.nextInt(100),random.nextInt(50), random.nextInt(100), random.nextInt(50)); } int max2=random.nextInt(15); for(int i=0;i<max2;i++) { graphics.setColor(new Color(random.nextInt(256),random.nextInt(256),random.nextInt(256))); graphics.drawOval(random.nextInt(80), random.nextInt(40), random.nextInt(5), random.nextInt(10)); }