java生成四位数字验证码_简单的随机生成4个数字验证码的实现
private String[] fontNames = {"宋體", "華文楷體", "黑體", "微軟雅黑", "楷體_GB2312"};//可選字符
private String codes = "23456789abcdefghjkmnopqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ";//背景色
private Color bgColor = new Color(255, 255, 255);//驗證碼上的文本
privateString text ;//生成隨機的顏色
privateColor randomColor () {int red = r.nextInt(150);int green = r.nextInt(150);int blue = r.nextInt(150);return newColor(red, green, blue);
}//生成隨機的字體
privateFont randomFont () {int index =r.nextInt(fontNames.length);
String fontName= fontNames[index];//生成隨機的字體名稱
int style = r.nextInt(4);//生成隨機的樣式, 0(無樣式), 1(粗體), 2(斜體), 3(粗體+斜體)
int size = r.nextInt(5) + 24; //生成隨機字號, 24 ~ 28
return newFont(fontName, style, size);
}//畫干擾線
private voiddrawLine (BufferedImage image) {int num = 3;//一共畫3條
Graphics2D g2 =(Graphics2D)image.getGraphics();for(int i = 0; i < num; i++) {//生成兩個點的坐標,即4個值
int x1 =r.nextInt(w);int y1 =r.nextInt(h);int x2 =r.nextInt(w);int y2 =r.nextInt(h);
g2.setStroke(new BasicStroke(1.5F));
g2.setColor(Color.BLUE);//干擾線是藍色
g2.drawLine(x1, y1, x2, y2);//畫線
}
}//隨機生成一個字符
private charrandomChar () {int index =r.nextInt(codes.length());returncodes.charAt(index);
}//創(chuàng)建BufferedImage
privateBufferedImage createImage () {
BufferedImage image= newBufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g2=(Graphics2D)image.getGraphics();
g2.setColor(this.bgColor);
g2.fillRect(0, 0, w, h);returnimage;
}//調用這個方法得到驗證碼
publicBufferedImage getImage () {
BufferedImage image= createImage();//創(chuàng)建圖片緩沖區(qū)
Graphics2D g2 = (Graphics2D)image.getGraphics();//得到繪制環(huán)境
StringBuilder sb = new StringBuilder();//用來裝載生成的驗證碼文本//向圖片中畫4個字符
for(int i = 0; i < 4; i++) {//循環(huán)四次,每次生成一個字符
String s = randomChar() + "";//隨機生成一個字母
sb.append(s); //把字母添加到sb中
float x = i * 1.0F * w / 4; //設置當前字符的x軸坐標
g2.setFont(randomFont()); //設置隨機字體
g2.setColor(randomColor()); //設置隨機顏色
g2.drawString(s, x, h-5); //畫圖
}this.text = sb.toString(); //把生成的字符串賦給了this.text
drawLine(image); //添加干擾線
returnimage;
}//返回驗證碼圖片上的文本
publicString getText () {returntext;
}//保存圖片到指定的輸出流
public static voidoutput (BufferedImage image, OutputStream out)throwsIOException {
ImageIO.write(image,"JPEG", out);
}
}
調用方法
@Testpublic void demo() throwsFileNotFoundException, IOException{
VerifyCode vc= newVerifyCode();
BufferedImage bi=vc.getImage();
VerifyCode.output(bi,new FileOutputStream("F:xxx.jpg"));
System.out.println(vc.getText());
}
總結
以上是生活随笔為你收集整理的java生成四位数字验证码_简单的随机生成4个数字验证码的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 序列号瑞星
- 下一篇: 基于C#的安全聊天工具设计