/**
* 生成验证码图片
* @param request
* @param response
* @throws IOException
*/
@RequestMapping(value = "user/authImage", method = { RequestMethod.POST, RequestMethod.GET })
@ResponseBody
public void doAuthImage(HttpServletRequest request, HttpServletResponse response) throws IOException {
String rand = null;
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
OutputStream toClient = response.getOutputStream();
rand = iVideoCloudService.doAuthImage(toClient);
if (rand != null) {
request.getSession().setAttribute("rand", rand);
}
}
public String doAuthImage(OutputStream toClient) {
String rand = "";
int width=100, height=25;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Font mFont = new Font("Times New Roman", Font.PLAIN, 24);
Graphics g = image.getGraphics();
Random random = new Random();
g.setColor(getRandColor(200,250));
g.fillRect(1, 1, width-1, height-1);
g.setColor(new Color(102,102,102));
g.drawRect(0, 0, width-1, height-1);
g.setFont(mFont);
g.setColor(getRandColor(160,200));
//画随机线
for (int i=0;i<155;i++)
{
int x = random.nextInt(width - 1);
int y = random.nextInt(height - 1);
int xl = random.nextInt(6) + 1;
int yl = random.nextInt(12) + 1;
g.drawLine(x,y,x + xl,y + yl);
}
//从另一方向画随机线
for (int i = 0;i < 70;i++)
{
int x = random.nextInt(width - 1);
int y = random.nextInt(height - 1);
int xl = random.nextInt(12) + 1;
int yl = random.nextInt(6) + 1;
g.drawLine(x,y,x - xl,y - yl);
}
//生成随机数,并将随机数字转换为字母
for (int i=0;i<4;i++)
{
int itmp = random.nextInt(26) + 65;
char ctmp = (char)itmp;
rand += String.valueOf(ctmp);
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
g.drawString(String.valueOf(ctmp),20*i+13,23);
}
g.dispose();
try {
ImageIO.write(image, "JPEG", toClient);
} catch (IOException e) {
return null;
}
return rand;
}