asp.net2005+javascript+SqlServer2000

爱她就要好好地呵护她

 

生成验证码图片(含模糊背景)

首先可以传来一个strCode,这个可以用简单的脚本生成就可以了
function buildImgCode()
    {
        vImgCode=Math.random().toString(10).substring(2,6);
        document.getElementById("imgCode").src="生成图片的页面.aspx?c="+vImgCode;
    } 


生成图片的页面:
this.buildCodeImg(this.Request["c"]);
private void buildCodeImg(string strCode)
    {
        if(strCode==null||strCode.Trim()==String.Empty||strCode=="")
            return;

        System.Drawing.Bitmap image=new System.Drawing.Bitmap((int)Math.Ceiling((strCode.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(strCode,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-1,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();
        }
    }

posted on 2007-04-07 09:51  g無s所p畏   阅读(1105)  评论(0编辑  收藏  举报

导航