/**
* 生成验证码
*
* @param request
* @param response
* @throws IOException
*/
@RequestMapping(value =
"randCode", produces =
"image/jpeg")
public void randCode(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setContentType(
"image/jpeg;charset=UTF-8");
response.setHeader(
"Pragma",
"No-cache");
response.setHeader(
"Cache-Control",
"no-cache");
response.setDateHeader(
"Expires",
0);
int width =
90, height =
40;
BufferedImage image =
new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
Random random =
new Random();
g.setColor(getRandColor(
180,
250));
g.fillRect(
0,
0, width, height);
for (
int i =
0; i <
5; i++) {
g.setColor(getRandColor(
50,
100));
int x = random.nextInt(width);
int y = random.nextInt(height);
g.drawOval(x, y,
4,
4);
}
g.setFont(
new Font(
"", Font.PLAIN,
40));
String sRand =
"";
for (
int i =
0; i <
4; i++) {
String rand = String.valueOf(random.nextInt(
10));
sRand += rand;
g.setColor(
new Color(
20 + random.nextInt(
80),
20 + random
.nextInt(
100),
20 + random.nextInt(
90)));
g.translate(random.nextInt() %
10, random.nextInt() %
6);
g.shear(
0.1,
0);
g.drawString(rand, (
17 + random.nextInt(
2)) * i +
8,
34);
for (
int k =
0; k <
16; k++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(
9);
int yl = random.nextInt(
9);
g.drawLine(x, y, x + xl, y + yl);
}
}
request.getSession().setAttribute(GEN_CODE, sRand);
g.dispose();
ImageIO.write(image,
"JPEG", response.getOutputStream());
}
private Color
getRandColor(
int fc,
int bc) {
Random rand =
new Random();
if (fc >
255) {
fc =
255;
}
if (bc >
255) {
bc =
255;
}
int r = fc + rand.nextInt(bc - fc);
int g = fc + rand.nextInt(bc - fc);
int b = fc + rand.nextInt(bc - fc);
return new Color(r, g, b);
}
爱学习的朋友们加 刚建的qq群交流学习<程序员之家 227493974>
转载请注明原文地址: https://ju.6miu.com/read-1311636.html