文章目录
1 生成图片
动态生成图片:
(1)创建图片缓冲区,使用BufferedImage类。
(2)设置其宽高
(3)得到这个图片的绘制环境(得到画笔),使用BufferedImage类的getGraphics()方法。
(4)保存起来。
private static BufferedImage createCodeImage() {
BufferedImage bufferedImage = new BufferedImage(VerifyCode.width, VerifyCode.height, BufferedImage.TYPE_INT_RGB);
Graphics paint = bufferedImage.getGraphics();
StringBuilder stb = new StringBuilder();
paint.setColor(backgroundColor);
paint.fillRect(0, 0, VerifyCode.width, VerifyCode.height);
for(int i = 0; i < 4; i++) {
int codeIndex = random.nextInt(VerifyCode.codes.length());
int fontIndex = random.nextInt(VerifyCode.fontNames.length);
int fontStyle = random.nextInt(4);
int fontSize = random.nextInt(5) + 24;
int r = random.nextInt(150);
int g = random.nextInt(150);
int b = random.nextInt(150);
String code = VerifyCode.codes.substring(codeIndex, codeIndex+1);
String font = VerifyCode.fontNames[fontIndex];
Color color = new Color(r,g,b);
paint.setColor(color);
paint.setFont(new Font(font, fontStyle, fontSize));
paint.drawString(code, 70/4*i, 35-4);
stb.append(code);
}
VerifyCode.rightCode = stb.toString();
return bufferedImage;
}
2 登录功能之添加验证码
验证码生成工具类:
package org.lks.login.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
public class VerifyCode {
private static String[] fontNames = {
"黑体",