public class TextCode {
static int height = 40;
static int width = 90;
static int codesize = 4;
static char[] codeSequence = { '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' };
public TextCode(Graphics g) {
BufferedImage bi = new BufferedImage(height, width, BufferedImage.TYPE_3BYTE_BGR);
Random random = new Random();
g.setColor(Color.white);
g.fillRect(0, 0, width, height);
g.setColor(Color.black);
g.drawRect(0, 0, width-1, height-1);
for(int i = 0; i < 30; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int x1 = random.nextInt(12);
int y1 = random.nextInt(12);
g.setColor(Color.gray);
g.drawLine(x, y, x+x1, y+y1);
}
StringBuffer randomCode = new StringBuffer();
int red = 0, green = 0, blue = 0;
for(int i = 0; i < codesize; i++) {
String s = String.valueOf(codeSequence[random.nextInt(36)]);
randomCode.append(s);
red = random.nextInt(255);
green = random.nextInt(255);
blue = random.nextInt(255);
g.setColor(new Color(red, blue, green));
g.drawString(s, 10*(i+1), 20);
}
System.out.println(randomCode);
//输出随机码以图片的形式
try {
OutputStream os = new FileOutputStream("D:\\远程桌面\\" + System.currentTimeMillis() + ".jpg");
OutputStream o = new FileOutputStream("D:\\远程桌面\\" + System.currentTimeMillis() + ".txt");
ImageIO.write(bi, "jpeg", os);
o.write(randomCode.toString().getBytes());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
验证码的生成
最新推荐文章于 2024-06-12 23:40:32 发布