Kaptcha 图片验证码生成
Kaptcha 简介说明
Kaptcha 是一个可高度配置的实用验证码生成工具,可自由配置的选项如:
验证码的字体验证码字体的大小验证码字体的字体颜色验证码内容的范围(数字,字母,中文汉字!)验证码图片的大小,边框,边框粗细,边框颜色验证码的干扰线验证码的样式(鱼眼样式、3D、普通模糊、…)
Kaptcha 详细配置表
kaptcha.border图片边框,合法值:yes , noyes
kaptcha.border.color边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue.blackkaptcha.image.width图片宽200kaptcha.image.height图片高50kaptcha.producer.impl图片实现类com.google.code.kaptcha.impl.DefaultKaptchakaptcha.textproducer.impl文本实现类com.google.code.kaptcha.text.impl.DefaultTextCreatorkaptcha.textproducer.char.string文本集合,验证码值从此集合中获取abcde2345678gfynmnpwxkaptcha.textproducer.char.length验证码长度5kaptcha.textproducer.font.names字体Arial, Courierkaptcha.textproducer.font.size字体大小40px.kaptcha.textproducer.font.color字体颜色,合法值: r,g,b 或者 white,black,blue.blackkaptcha.textproducer.char.space文字间隔2kaptcha.noise.impl干扰实现类com.google.code.kaptcha.impl.DefaultNoisekaptcha.noise.color干扰 颜色,合法值: r,g,b 或者 white,black,blue.blackkaptcha.obscurificator.impl图片样式:水纹 com.google.code.kaptcha.impl.WaterRipple 鱼眼 com.google.code.kaptcha.impl.FishEyeGimpy 阴影 com.google.code.kaptcha.impl.ShadowGimpycom.google.code.kaptcha.impl.WaterRipplekaptcha.background.impl背景实现类com.google.code.kaptcha.impl.DefaultBackgroundkaptcha.background.clear.from背景颜色渐变,开始颜色light greykaptcha.background.clear.to背景颜色渐变, 结束颜色whitekaptcha.word.impl文字渲染器com.google.code.kaptcha.text.impl.DefaultWordRendererkaptcha.session.keysession keyKAPTCHA_SESSION_KEYkaptcha.session.datesession dateKAPTCHA_SESSION_DATE
准备
这里是通过SpringBoot来进行的测试
所需依赖
这里面用到了mybatis-plus,如果是单独要生图片验证码,并不需要mybatis-plus,这里用到只是因为在业务场景中使用到。可以自己考虑是否添加。
<dependency>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-test
</artifactId>
<scope>test
</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage
</groupId>
<artifactId>junit-vintage-engine
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.axet
</groupId>
<artifactId>kaptcha
</artifactId>
<version>${kaptcha.version}
</version>
</dependency>
<dependency>
<groupId>commons-io
</groupId>
<artifactId>commons-io
</artifactId>
<version>${commons.io.version}
</version>
</dependency>
配置Kaptcha
package com
.gyy
.config
;
import com
.google
.code
.kaptcha
.impl
.DefaultKaptcha
;
import com
.google
.code
.kaptcha
.util
.Config
;
import org
.springframework
.context
.annotation
.Bean
;
import org
.springframework
.context
.annotation
.Configuration
;
import java
.util
.Properties
;
@Configuration
public class KaptchaConfig {
@Bean
public DefaultKaptcha
producer() {
Properties properties
= new Properties();
properties
.put("kaptcha.border", "no");
properties
.put("kaptcha.textproducer.font.color", "black");
properties
.put("kaptcha.textproducer.char.space", "5");
properties
.put("kaptcha.textproducer.font.names", "Arial,Courier,cmr10,宋体,楷体,微软雅黑");
Config config
= new Config(properties
);
DefaultKaptcha defaultKaptcha
= new DefaultKaptcha();
defaultKaptcha
.setConfig(config
);
return defaultKaptcha
;
}
}
SysLoginController
package com
.gyy
.module
.sys
.controller
;
import com
.google
.code
.kaptcha
.Producer
;
import org
.apache
.commons
.io
.IOUtils
;
import org
.springframework
.beans
.factory
.annotation
.Autowired
;
import org
.springframework
.web
.bind
.annotation
.*
;
import javax
.imageio
.ImageIO
;
import javax
.servlet
.ServletOutputStream
;
import javax
.servlet
.http
.HttpServletResponse
;
import java
.awt
.image
.BufferedImage
;
import java
.io
.IOException
;
@RestController
@RequestMapping("/sys")
public class SysLoginController {
@Autowired
private Producer producer
;
@GetMapping("captcha2.jpg")
public void captcha2(HttpServletResponse response
) throws IOException
{
response
.setHeader("Cache-Control", "no-store, no-cache");
response
.setContentType("image/jpeg");
String code
= producer
.createText();
BufferedImage image
= producer
.createImage(code
);
ServletOutputStream out
= response
.getOutputStream();
ImageIO
.write(image
, "jpg", out
);
IOUtils
.closeQuietly(out
);
}
}
测试