public Map getVerificationCode(HttpServletResponse response) {
Map<String, Object> result = new HashMap<String, Object>();
try {
int width=200;
int height=69;
//生成对应宽高的初始图片
BufferedImage verifyImg=new
BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
//单独的一个类方法,出于代码复用考虑,进行了封装。
String randomText = VerifyCode.drawRandomText(width,height,verifyImg);
//功能是生成验证码字符并加上噪点,干扰线,返回值为验证码字符
response.setContentType("image/png");//必须设置响应内容类型为图片,否则前台不识别
//将图片转换陈字符串给前端
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ImageIO.write(verifyImg, "png", stream);
String base64 = Base64.encode(stream.toByteArray());
stream.flush();
stream.close();
//封装数据
String uuid = IDTool.getUUID32();
result.put("image", "data:image/png;base64,"+base64);
result.put("uuid", uuid);
redisUtil.set("verifyCode:"+uuid,randomText.toLowerCase(),5L,
TimeUnit.MINUTES);
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
BufferedImage转为base64
最新推荐文章于 2023-11-08 10:40:32 发布