生成验证码的一段源代码

it2022-05-05  93

在页面中生成验证码的代码:

 

private   void  Page_Load( object  sender, System.EventArgs e)   {     string  checkCode  =  GetRandomCode( 4 );    Session[ " CheckCode " =  checkCode;    SetPageNoCache();    CreateImage(checkCode);   }    ///   <summary>    ///  设置页面不被缓存    ///   </summary>    private   void  SetPageNoCache()   {    Response.Buffer  =   true ;    Response.ExpiresAbsolute  =  System.DateTime.Now.AddSeconds( - 1 );    Response.Expires  =   0 ;    Response.CacheControl  =   " no-cache " ;    Response.AppendHeader( " Pragma " , " No-Cache " );   } private   string  GetRandomCode( int  CodeCount)    {              string  allChar  =   " 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,i,J,K,M,N,P,Q,R,S,T,U,W,X,Y,Z " ;     string [] allCharArray  =  allChar.Split( ' , ' );      string  RandomCode  =   "" ;      int  temp  =   - 1 ;     Random rand  =   new  Random();      for  ( int  i = 0 ;i < CodeCount;i ++ )     {       if  (temp  !=   - 1 )      {       rand  =   new  Random(temp * i * (( int ) DateTime.Now.Ticks));      }       int  t  =  rand.Next( 33 );       while  (temp  ==  t)      {       t  =  rand.Next( 33 );      }         temp  =  t;      RandomCode  +=  allCharArray[t];     }      return  RandomCode;    }    private   void  CreateImage( string  checkCode)   {     int  iwidth  =  ( int )(checkCode.Length  *   14 );    System.Drawing.Bitmap image  =   new  System.Drawing.Bitmap(iwidth,  20 );    Graphics g  =  Graphics.FromImage(image);    Font f  =   new  System.Drawing.Font( " Arial  " 10 ); // , System.Drawing.FontStyle.Bold);    Brush b  =   new  System.Drawing.SolidBrush(Color.Black);             Brush r  =   new  System.Drawing.SolidBrush(Color.FromArgb( 166 , 8 , 8 ));         // g.FillRectangle(new System.Drawing.SolidBrush(Color.Blue),0,0,image.Width, image.Height); //    g.Clear(Color.AliceBlue); // 背景色    g.Clear(System.Drawing.ColorTranslator.FromHtml( " #99C1CB " )); // 背景色              char [] ch  =  checkCode.ToCharArray();              for  ( int  i  =   0 ; i  <  ch.Length; i ++  )             {                  if (ch[i]  >=   ' 0 '   &&  ch[i]  <=   ' 9 ' )                 {                      // 数字用红色显示                     g.DrawString(ch[i].ToString(), f, r,  3   +  (i  *   12 ), 3 );                 }                  else                 {    // 字母用黑色显示                     g.DrawString(ch[i].ToString(), f, b,  3   +  (i  *   12 ), 3 );                 }             }                System.IO.MemoryStream ms  =   new  System.IO.MemoryStream();    image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);     // history back 不重复     Response.Cache.SetNoStore(); // 这一句       Response.ClearContent();    Response.ContentType  =   " image/Jpeg " ;    Response.BinaryWrite(ms.ToArray());    g.Dispose();    image.Dispose();   }

调用的时候设置imageurl='...aspx'就可以了。

 

转载于:https://www.cnblogs.com/Hard/archive/2009/02/25/1398061.html


最新回复(0)