C# 制作图片验证码

1、引命名空间:using System.Drawing;

2、制作一个小图片、容器:

//制作一个长100,高50的画布
Bitmap img = new Bitmap(160,40);
//开始在这个画布上绘制:
Graphics gra = Graphics.FromImage(img);

3、要画的内容:

 

        //定义颜色,添加到集合内;
        List<Color> clist = new List<Color>();
        clist.Add(Color.Red);
        clist.Add(Color.Yellow);
        clist.Add(Color.Blue);
        clist.Add(Color.Green);
        clist.Add(Color.Aqua);
        clist.Add(Color.Orange);
        clist.Add(Color.Pink);
        //随机数
        Random ran = new Random();
        //验证码正文
        string yzm = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
        string yzm2 = "";
        //定义一个颜色的值当背景色选择了这个颜色后,把这个颜色从集合内删掉,防止字体颜色和背景颜色重复;
        Color bgcolor = clist[ran.Next(0, clist.Count)];
        clist.Remove(bgcolor);
        //画背景色,参数:颜色,X轴位置,Y轴位置,宽度,高度;
        gra.FillRectangle(new SolidBrush(bgcolor), 0, 0, 160, 40);
        //循环生成一个6位数的验证码;
        for (var i = 0; i < 6; i++)
        {
            yzm2 += yzm[ran.Next(0, yzm.Length)];
        }
        Session["YanZhengMa"] = yzm2;
        //定义字体:样式“微软雅黑”,字体大小“23”;
        Font font = new Font("微软雅黑", 23);
        //定义画刷“SolidBrush”实线画刷,颜色从集合内选择随机颜色;
        Brush brush = new SolidBrush(clist[ran.Next(0,clist.Count)]);
        //画验证码,参数:6位数验证码,字体,画刷,X轴位置,Y轴位置;
        gra.DrawString(yzm2, font, brush, ran.Next(0, 40), ran.Next(0, 7));
        //循环生成干扰线
        for (var i = 0; i < 5; i++)
        {
            //定义一个画笔,参数:画笔的颜色,画笔的粗细度
            Pen pen = new Pen(new SolidBrush(clist[ran.Next(0, clist.Count)]), ran.Next(2, 3));
            //干扰线的第一个点,参数:X轴位置,Y轴位置;
            Point point = new Point(ran.Next(0, 160), ran.Next(0, 40));
            //干扰线的第二个点,参数:X轴位置,Y轴位置;
            Point point2 = new Point(ran.Next(0, 160), ran.Next(0, 40));
            //画干扰线,参数:画笔,第一个点,第二个点;
            gra.DrawLine(pen, point, point2);
        }
        //保存图片,参数:保存到流,保存成“Jpeg”格式;
        img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    }

 

4、需要用另一个页面才能打开此验证码图,设置完验证码图后,把ss的值赋给一个session或者是cookie,在另一个页面验证,textbox的值如果等于session或cookie就通过,不是就return;

5、点击图片验证码更换

 

        var a = 1;
        $('.YZM_img').click(function () {
            $(this).attr('src', 'YZM.aspx?' + a);
            a++;
        });

 

 

 

=====================

成品直接拷,颜色需修改;

posted @ 2018-01-14 22:22  _Iniesta  阅读(1449)  评论(0编辑  收藏  举报