java动态生成验证码图片
来源:互联网 发布:农村淘宝app苹果版下载 编辑:程序博客网 时间:2024/05/17 01:04
实现动态生成验证码图片.代码如下:
/** * * @author KingDom * 动态生成验证码图片 */public class VerifyCode { private int w=70; private int h=35; private Random r= new Random(); private String[] fontNames={"宋体","华文楷体","黑体","微软雅黑","楷体_GB2312"}; private String codes="012345678901234567890123456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"; private Color bgColor = new Color(255,255,255); private String text; private Color randomColor(){ int red = r.nextInt(150); int green = r.nextInt(150); int blue = r.nextInt(150); return new Color(red,green,blue); } private Font randomFont(){ int index = this.r.nextInt(fontNames.length); String fontName = fontNames[index]; int style = this.r.nextInt(4); int size = this.r.nextInt(5) + 24; return new Font(fontName, style, size); } private void drawLine (BufferedImage image){ int num = 3; Graphics2D g2=(Graphics2D)image.getGraphics(); for(int i=0;i<num;i++){ 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 char randomChar(){ int index=r.nextInt(this.codes.length()); return this.codes.charAt(index); } private BufferedImage createImage(){ BufferedImage image=new BufferedImage(this.w,this.h,BufferedImage.TYPE_INT_RGB);//BufferedImage.TYPE_INT_RGB Graphics2D g2 = (Graphics2D)image.getGraphics(); g2.setColor(this.bgColor); g2.fillRect(0,0,this.w,this.h); return image; } public BufferedImage getImage(){ BufferedImage image=createImage(); Graphics2D g2=(Graphics2D)image.getGraphics(); StringBuilder sb = new StringBuilder(); for(int i =0;i<4;i++){ String s= randomChar()+""; sb.append(s); float x= i*1.0F*this.w/4.0F; g2.setFont(randomFont()); g2.setColor(randomColor()); g2.drawString(s,x,this.h-5); } this.text=sb.toString(); drawLine(image);//添加干扰线 return image; } //返回验证码上的文本 public String getText(){ return this.text; } //保存图片到指定的输出流 public static void output(BufferedImage image,OutputStream out) throws IOException{ ImageIO.write(image,"JPEG",out); } }
测试类:
/** * * @author KingDom * 动态生成图片测试 */public class Demo { @Test public void test() throws FileNotFoundException, IOException{ VerifyCode vc=new VerifyCode(); BufferedImage bi = vc.getImage(); VerifyCode.output(bi,new FileOutputStream("E:/xxx.jpg")); System.out.println("图片中的验证是:"+vc.getText()); } }
在系统的E盘中生成了一张xxx.jpg的图片
在控制台中输出了该图片中的验证码:
0 0
- java动态生成验证码图片
- 动态生成验证码图片
- java生成验证码图片,包括动态gif图片格式
- 生成动态验证图片
- java动态生成验证码
- java生成动态验证码
- JAVA 生成动态验证码
- Java生成图片验证码
- Java生成验证码图片
- Java生成图片验证码
- Java生成图片验证码
- JAVA 生成验证码图片
- Java生成图片验证码
- Java生成验证码图片
- java生成验证码图片
- java生成验证码图片
- java 生成图片验证码
- java生成图片验证码
- c语言易错基础知识
- Struts中ActionContext和ServletActionContext的比较
- 微信活动应该做到这个份的计划文档
- 读《光荣与梦想》三,The Glory and The Dream
- bzoj1087
- java动态生成验证码图片
- python模拟登陆
- 小白学算法3.3——三向字符串快速排序
- 排序之冒泡排序法
- R批量修改文件名
- Android optionsMenu,菜单的使用
- NULL字符串和空字符串的区别
- 手势识别器(UIGestureRecognizer)- UISwipeGestureRecognizer(轻扫)
- C#: WMI 获取远程 Windows 主机信息