验证码图片生成代码

ExpandedBlockStart.gif 验证码图片生成代码
     using  System.Drawing;

    
public   partial   class  Pub_validcode : System.Web.UI.Page
    {
    
protected   void  Page_Load( object  sender, EventArgs e)
    {
        
this .CreateCheckCodeImage(GenerateCheckCode());
    }

    
// 生成随机数
     private   string  GenerateCheckCode()
    {
        
int  number;
        
char  code;
        
string  checkCode  =  String.Empty;

        System.Random random 
=   new  Random();

        
for  ( int  i  =   0 ; i  <   4 ; i ++ )
        {
            number 
=  random.Next();

            
if  (number  %   2   ==   0 )
                code 
=  ( char )( ' 0 '   +  ( char )(number  %   10 ));
            
else
                code 
=  ( char )( ' 0 '   +  ( char )(number  %   10 ));
            
// code = (char)('a' + (char)(number % 26));

            checkCode 
+=  code.ToString();
        }

        Response.Cookies.Add(
new  HttpCookie( " CheckCode " , checkCode));

        
// 将生成的随机数保存到session中

        Session[
" Num " =  checkCode.ToString().ToLower();

        
return  checkCode;
    }

    
private   void  CreateCheckCodeImage( string  checkCode)
    {
        
if  (checkCode  ==   null   ||  checkCode.Trim()  ==  String.Empty)
            
return ;

        System.Drawing.Bitmap image 
=   new  System.Drawing.Bitmap(( int )Math.Ceiling((checkCode.Length  *   12.5 )),  22 );
        Graphics g 
=  Graphics.FromImage(image);

        
try
        {
            
// 生成随机生成器 
            Random random  =   new  Random();

            
// 清空图片背景色 
            g.Clear(Color.White);

            
// 画图片的背景噪音线 
             for  ( int  i  =   0 ; i  <   25 ; i ++ )
            {
                
int  x1  =  random.Next(image.Width);
                
int  x2  =  random.Next(image.Width);
                
int  y1  =  random.Next(image.Height);
                
int  y2  =  random.Next(image.Height);

                g.DrawLine(
new  Pen(Color.Silver), x1, y1, x2, y2);
            }

            Font font 
=   new  System.Drawing.Font( " Arial " 12 , (System.Drawing.FontStyle.Bold  |  System.Drawing.FontStyle.Italic));
            System.Drawing.Drawing2D.LinearGradientBrush brush 
=   new  System.Drawing.Drawing2D.LinearGradientBrush( new  Rectangle( 0 0 , image.Width, image.Height), Color.Blue, Color.DarkRed,  1.2f true );
            g.DrawString(checkCode, font, brush, 
2 2 );

            
// 画图片的前景噪音点 
             for  ( int  i  =   0 ; i  <   100 ; i ++ )
            {
                
int  x  =  random.Next(image.Width);
                
int  y  =  random.Next(image.Height);

                image.SetPixel(x, y, Color.FromArgb(random.Next()));
            }

            
// 画图片的边框线 
            g.DrawRectangle( new  Pen(Color.Silver),  0 0 , image.Width  -   2 , image.Height  -   1 );

            System.IO.MemoryStream ms 
=   new  System.IO.MemoryStream();
            image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
            Response.ClearContent();
            Response.ContentType 
=   " image/Gif " ;
            Response.BinaryWrite(ms.ToArray());
        }
        
finally
        {
            g.Dispose();
            image.Dispose();
        }
    }
}
 
ExpandedBlockStart.gif 前台调用代码
function  refresh()
{    
    $(
" imgValid " ).src = " ValidCode.aspx?temp= " +  ( new  Date().getTime().toString( 36 )); 
    
return   false ;
}
< img id = " imgValid "  src = " ValidCode.aspx "  onclick = " javascript:refresh(); "  alt  = ""/ >


转载于:https://www.cnblogs.com/hwx0807/archive/2010/08/09/1795670.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值