以下是我写的生成的图片验证码
//调用验证码生成并把验证码返回页面
????????Map<String,?BufferedImage>?imageMap?=?ImageUtil.createImage();
String?code?=?imageMap.keySet().iterator().next();
session.setAttribute("imageCode",?code);
BufferedImage?image?=?imageMap.get(code);
response.setContentType("image/jpeg");
OutputStream?ops?=?response.getOutputStream();
ImageIO.write(image,?"jpeg",?ops);
ops.close();
//生成验证码工具类
public?final?class?ImageUtil?{
private?static?final?char[]?chars?=?{?'A',?'B',?'C',?'D',?'E',?'F',?'G',?'H',?'I',?'J',???
????????????'K',?'L',?'M',?'N',?'O',?'P',?'Q',?'R',?'S',?'T',?'U',?'V',?'W',???
????????????'X',?'Y',?'Z',?'0',?'1',?'2',?'3',?'4',?'5',?'6',?'7',?'8',?'9'?};???
private?static?final?int?SIZE?=?4;
private?static?final?int?LINES?=?5;
private?static?final?int?WIDTH?=?80;
private?static?final?int?HEIGHT?=?40;
private?static?final?int?FONT_SIZE?=?30;
public?static?Map<String,?BufferedImage>?createImage()?{
StringBuffer?sb?=?new?StringBuffer();
BufferedImage?image?=?new?BufferedImage(WIDTH,?HEIGHT,
BufferedImage.TYPE_INT_RGB);
Graphics?graphic?=?image.getGraphics();
graphic.setColor(Color.LIGHT_GRAY);
graphic.fillRect(0,?0,?WIDTH,?HEIGHT);
Random?ran?=?new?Random();
//?画随机字符
for?(int?i?=?1;?i?<=?SIZE;?i++)?{
int?r?=?ran.nextInt(chars.length);
graphic.setColor(getRandomColor());
graphic.setFont(new?Font(null,?Font.BOLD?+?Font.ITALIC,?FONT_SIZE));
graphic.drawString(chars[r]?+?"",?(i?-?1)?*?WIDTH?/?SIZE,?HEIGHT?/?2);
sb.append(chars[r]);
}
//?画干扰线
for?(int?i?=?1;?i?<=?LINES;?i++)?{
graphic.setColor(getRandomColor());
graphic.drawLine(ran.nextInt(WIDTH),?ran.nextInt(HEIGHT),
ran.nextInt(WIDTH),?ran.nextInt(HEIGHT));
}
Map<String,?BufferedImage>?map?=?new?HashMap<String,?BufferedImage>();
map.put(sb.toString(),?image);
return?map;
}
public?static?Color?getRandomColor()?{
Random?ran?=?new?Random();
Color?color?=?new?Color(ran.nextInt(256),?ran.nextInt(256),ran.nextInt(256));
return?color;
}
public?static?InputStream?getInputStream(BufferedImage?image)
throws?IOException?{
ByteArrayOutputStream?bos?=?new?ByteArrayOutputStream();
JPEGImageEncoder?encoder?=?JPEGCodec.createJPEGEncoder(bos);
encoder.encode(image);
byte[]?imageBts?=?bos.toByteArray();
InputStream?in?=?new?ByteArrayInputStream(imageBts);
return?in;
}
}
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....