龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

产生彩色验证码_(javabean实现)

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
本文将教你如何一步一步地使用Javabean实现了产生彩色验证码的全过程,并提供源代码。 文件名:Image.java ===================================== /* * Created on 2004-8-4 * * To change the template for this g
  本文将教你如何一步一步地使用Javabean实现了产生彩色验证码的全过程,并提供源代码。
  

  
   
  
   文件名:Image.java
  =====================================
  /*
   * Created on 2004-8-4
   *
   * To change the template for this generated file go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  package myclass.test;

  import java.awt.*;
  import java.awt.image.*;
  import java.util.*;

  /**
   * @author
   *
   * To change the template for this generated type comment go to
   * Window>Preferences>Java>Code Generation>Code and Comments
   */
  public class Image {
   
    public String sRand="";
   
    public 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);
     }
    public BufferedImage creatImage(){

   // 在内存中创建图象
      int width=60, 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));


  

   进入讨论组讨论。

  
      //画边框
      //g.setColor(new Color());
      //g.drawRect(0,0,width-1,height-1);

      // 随机产生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 rand = request.getParameter("rand");
      //rand = rand.substring(0,rand.indexOf("."));
     
      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)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
  
  

精彩图集

赞助商链接