天下白

导航

生成验证码图片

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;

namespace LSMWebSite
{
 /// <summary>
 /// ValidateGif 的摘要说明。
 /// </summary>
 public class ValidateGif : System.Web.UI.Page
 {
 
  #region 页面初始化方法
  private void Page_Load(object sender, System.EventArgs e)
  {
   validateStr=createRandomStr();
   createPic(validateStr);

  }
  #endregion

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  #region 生成图片
  private void createPic(string str)
  {
   char[] chars=new char[4];
   chars=str.ToCharArray();
   Random randomFont=new Random();
   Random randomSize=new Random();
   int size;
   int fontnum;
   Font font=null;
   
   Bitmap image=new Bitmap(100,30);
   Graphics g=Graphics.FromImage(image);
   string thefulname=Server.MapPath("/")+str+".gif";
   g.Clear(Color.Gainsboro);
   for(int i=0;i<4;i++)
   {
    size=randomSize.Next(12,22);
    fontnum=randomFont.Next(5);
    switch(fontnum)
    {
     case 1: font=new Font("Arial Black",size);
       break;
     case 2: font=new Font("BatangChe",size);
       break;
     case 3: font=new Font("Gulim",size);
       break;
     default:font=new Font("Courier New",size);
       break;
    }
    g.DrawString(Convert.ToString(chars[i]),font,new SolidBrush(Color.Red),20+i*15,2);
   }
   g.DrawRectangle(new System.Drawing.Pen(Color.Black),0,0,99,29);
//   g.DrawString(str,new Font("Courier New",10),new SolidBrush(Color.Red),20,5);
   //image.Save(thefulname,System.Drawing.Imaging.ImageFormat.Jpeg);
   MemoryStream stream=new MemoryStream();
   image.Save(stream,System.Drawing.Imaging.ImageFormat.Gif);
   Response.ClearContent();
   Response.ContentType="image/GIF";
   Response.BinaryWrite(stream.ToArray());
   g.Dispose();
   image.Dispose();
   Response.End();


  }
  #endregion

  #region 生成随机字符串
  private string createRandomStr()
  {
   Random ranNum=new Random();
   Random ranChar=new Random();
   char[] chars=new char[4];
   for(int i=0;i<4;i++)
   {
    if(ranNum.Next(0,9)%2==0)
    {
     chars[i]=Convert.ToChar(ranChar.Next(49,58));
    }
    else
    {
     chars[i]=Convert.ToChar(ranChar.Next(96,123));
    }
   }

   return new string(chars);
  }
  #endregion

  #region 利用Session存储随机字符串validateStr
  private string validateStr
  {
   get
   {
    return Session["validateStr"].ToString();
   }
   set
   {
    Session["validateStr"]=value;
   }
  }
  #endregion
 }
}

posted on 2004-12-29 12:06  天下白  阅读(1953)  评论(3)    收藏  举报