C#产生随机验证码的代码



using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Text;
using  System.Drawing.Drawing2D;
using  System.Drawing;
using  System.IO;
using  System.Drawing.Imaging;
 
public  partial class ValidateCode : System.Web.UI.Page
{
     private  string code;
     private  const int ImageHeigth = 22;             //验证码图片的高度
     private  const double ImageLengthBase = 12.5;    //验证码图片中每个字符的宽度
     private  const int ImageLineNumber = 25;         //噪音线的数量
     private  const int ImagePointNumber = 100;       //噪点的数量
     private  int length;
     public  static string VALIDATECODEKEY;       //此处用来保存验证码到Session的Key的名称
 
     //静态构造函数初始化验证码在Session中的Key名称
     static  ValidateCode()
     {
         VALIDATECODEKEY =  "VALIDATECODEKEY";
     }
 
     //设置验证码的长度和内容
     public  ValidateCode()
     {
         this .length = 4;
         this .code =  string.Empty;
     }
 
     ///
     /// 产生随机的验证码并加入Session
     ///
     /// 验证码长度
     ///
     public  string CreateCode(int length)
     {
         if  (length <= 0)
         {
             return  string.Empty;
         }
         Random random =  new Random();
         StringBuilder builder =  new StringBuilder();
         //产生随机的验证码并拼接起来
         for  (int i = 0; i < length; i++)
         {
             builder.Append(random.Next(0, 10));
         }
         this .code = builder.ToString();
         this .Session[VALIDATECODEKEY] =  this.code;
         return  this.code;
     }
 
     ///
     /// 根据长度产生验证码
     /// 并将验证码画成图片
     ///
     /// 验证码长度
     public  void CreateValidateImage(int length)
     {
         this .code =  this.CreateCode(length);
         this .CreateValidateImage( this .code);
     }
     ///
     /// 根据产生的验证码生成图片
     ///
     /// 验证码
     public  void CreateValidateImage(string code)
     {
         if  (!string.IsNullOrEmpty(code))
         {
             this .Session[VALIDATECODEKEY] = code;
             //初始化位图Bitmap对象,指定图片对象的大小(宽,高)
             Bitmap image =  new Bitmap((int)Math.Ceiling((double)(code.Length * ImageLengthBase)), ImageHeigth);
             //初始化一块画布
             Graphics graphics = Graphics.FromImage(image);
             Random random =  new Random();
             try
             {
                 int  num5;
                 graphics.Clear(Color.White);
                 //绘制噪音线
                 for  (num5 = 0; num5 < ImageLineNumber; num5++)
                 {
                     int  num = random.Next(image.Width);
                     int  num3 = random.Next(image.Height);
                     int  num2 = random.Next(image.Width);
                     int  num4 = random.Next(image.Height);
                     graphics.DrawLine( new  Pen(Color.Silver), num, num3, num2, num4);
                 }
                 //验证码字体样式
                 Font font =  new Font("Tahoma", 12, FontStyle.Italic | FontStyle.Bold);
                 LinearGradientBrush brush =  new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
                 //绘制验证码到画布
                 graphics.DrawString(code, font, brush, ( float )2, ( float )2);
                 //绘制噪点
                 for  (num5 = 0; num5 < ImagePointNumber; num5++)
                 {
                     int  x = random.Next(image.Width);
                     int  y = random.Next(image.Height);
                     image.SetPixel(x, y, Color.FromArgb(random.Next()));
                 }
                 graphics.DrawRectangle( new  Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
                 MemoryStream stream =  new MemoryStream();
                 //保存图片
                 image.Save(stream, ImageFormat.Gif);
                 base .Response.ClearContent();
                 base .Response.ContentType =  "image/Gif";
                 base .Response.BinaryWrite(stream.ToArray());
             }
             finally
             {
                 graphics.Dispose();
                 image.Dispose();
             }
         }
     }
     protected  override void OnLoad(EventArgs e)
     {
         this .CreateValidateImage( this .length);
     }
 
     // Properties
     public  string Code
     {
         get
         {
             return  this.Code;
         }
     }
     public  int Length
     {
         get
         {
             return  this.length;
         }
         set
         {
             this .length = value;
         }
     }
}

再次申明非本人原创。可以到网上下载ASPNETAJAXWeb.ValidateCode.dll直接使用


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM