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++; });
=====================
成品直接拷,颜色需修改;