为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

随机生成验证码

2017-09-19 4页 doc 20KB 34阅读

用户头像

is_337177

暂无简介

举报
随机生成验证码package login.validate; import java.awt.Color;      import java.awt.Font;      import java.awt.Graphics;      import java.awt.image.BufferedImage;      import java.io.ByteArrayInputStream;      import java.io.ByteArrayOutputStream;      import java.util.Random...
随机生成验证码
package login.validate; import java.awt.Color;      import java.awt.Font;      import java.awt.Graphics;      import java.awt.image.BufferedImage;      import java.io.ByteArrayInputStream;      import java.io.ByteArrayOutputStream;      import java.util.Random;      import javax.imageio.ImageIO;      import javax.imageio.stream.ImageOutputStream;      public class RandomNum {      private ByteArrayInputStream image;//图像          private String str;//验证码      /*    public static final char[] code = {'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',         '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 RandomNum(){              init();//初始化属性          }          /*        * 取得RandomNumUtil实例        */          public static RandomNum Instance(){              return new RandomNum();          }          /*        * 取得验证码图片        */          public ByteArrayInputStream getImage(){              return this.image;          }          /*        * 取得图片的验证码        */          public String getString(){              return this.str;          }                private void init() {          // 在内存中创建图象              int width=65, height=20;              BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);              // 获取图形上下文              Graphics g = image.getGraphics();              // 生成随机类              Random random = new Random();              // 设定背景色              g.setColor(getRandColor(200,250));              g.fillRect(0, 0, width, height);              // 设定字体              g.setFont(new Font("Times New Roman",Font.PLAIN,18));              // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到              g.setColor(getRandColor(160,200));          for (int i=0;i<155;i++)          {              int x = random.nextInt(width);              int y = random.nextInt(height);              int xl = random.nextInt(12);              int yl = random.nextInt(12);              g.drawLine(x,y,x+xl,y+yl);          }      // 取随机产生的认证码(4位数字)          String sRand="";          for (int i=0;i<4;i++){              String rand=String.valueOf(random.nextInt(10));              sRand+=rand;              // 将认证码显示到图象中              g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));              // 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成              g.drawString(rand,13*i+6,16);          }          //赋值验证码              this.str=sRand;         //图象生效              g.dispose();              ByteArrayInputStream input=null;              ByteArrayOutputStream output = new ByteArrayOutputStream();          try{              ImageOutputStream imageOut = ImageIO.createImageOutputStream(output);              ImageIO.write(image, "JPEG", imageOut);              imageOut.close();              input = new ByteArrayInputStream(output.toByteArray());          }catch(Exception e){              System.out.println("验证码图片出现错误:"+e.toString());          }                  this.image=input;/* 赋值图像 */          }          /*        * 给定范围获得随机颜色        */              private Color getRandColor(int fc,int bc){              Random random = new Random();              if(fc>255) fc=255;              if(bc>255) bc=255;              int r=fc+random.nextInt(bc-fc);              int g=fc+random.nextInt(bc-fc);              int b=fc+random.nextInt(bc-fc);              return new Color(r,g,b);          }            } 文档已经阅读完毕,请返回上一页!
/
本文档为【随机生成验证码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索