引入kaptcha库
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
创建bean
<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
<property name="config">
<bean class="com.google.code.kaptcha.util.Config">
<constructor-arg>
<props>
<prop key="kaptcha.border">yes</prop>
<prop key="kaptcha.border.color">105,179,90</prop>
<prop key="kaptcha.textproducer.font.color">blue</prop>
<prop key="kaptcha.image.width">125</prop>
<prop key="kaptcha.image.height">45</prop>
<prop key="kaptcha.textproducer.font.size">45</prop>
<prop key="kaptcha.session.key">code</prop>
<prop key="kaptcha.textproducer.char.length">4</prop>
<prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop>
</props>
</constructor-arg>
</bean>
</property>
</bean>
Java代码
@Resource
private Producer captchaProducer;
// create the text for the image
String capText = captchaProducer.createText();
// create the image with the text
BufferedImage bufferedImage = captchaProducer.createImage(capText);
//io流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
//写入流中
ImageIO.write(bufferedImage, "png", baos);
} catch (IOException e) {
e.printStackTrace();
}
//转换成字节
byte[] bytes = baos.toByteArray();
BASE64Encoder encoder = new BASE64Encoder();
//转换成base64串
String png_base64 = encoder.encodeBuffer(bytes).trim();
//删除 \r\n
png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");
System.out.println("值为:"+"data:image/jpg;base64,"+png_base64);
// todo 将 capText 保存到redis中,用于后续校验
验证Base64