验证码代码如下:
public String GetValidateNum(Stream stream) { string str = ""; //摇26个字母 Random random = new Random(); for (int i = 0; i < 4; i++) { int asii = random.Next(97, 123); char mychar = (char)asii; int x = i == 0 ? 10 : 20; //将字母画到图片上(字符,字体,画笔,横向X,竖向Y) str += mychar.ToString(); } GetValidateImg(stream, str); return str; } /// <summary> /// 生成验证码 /// </summary> /// <param name="stream"></param> /// <param name="num"></param> public void GetValidateImg(Stream stream,string num) { //声明画图 Bitmap bitmap = new Bitmap(120, 30); //实例化Graphics类 绘图表面 Graphics graphics = Graphics.FromImage(bitmap); graphics.Clear(Color.White);//背景颜色 //声明随机数 Random random = new Random(); for (int i = 0; i < 500; i++) { bitmap.SetPixel(random.Next(120), random.Next(30), Color.Red); //生成干扰点 } //设置字体,为宋替,大小:19,类型:粗替|加斜 Font font = new Font("宋体", 19, FontStyle.Bold | FontStyle.Italic); //生成字母 for (int i = 0; i < num.Length; i++) { int x = i == 0 ? 10 : 20; //将字母画到图片上(字符,字体,画笔,横向X,竖向Y) graphics.DrawString(num[i].ToString(), font, Brushes.Black, x * (i + 1), 0); } //生成干扰线 for (int i = 0; i < 10; i++) { //声明花笔 随机颜色 Pen pen = new Pen(Color.FromArgb(random.Next(255), random.Next(255), random.Next(255), random.Next(255))); //画线 graphics.DrawLine(pen, random.Next(120), random.Next(30), random.Next(120), random.Next(30)); } //输出流 bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg); bitmap.Dispose(); graphics.Dispose(); }
//页面调用
if (!IsPostBack) { //生成的图片,把验证码存储至session BitmapShop bs = new BitmapShop(); string num = bs.GetValidateNum(Response.OutputStream); Session["validate"] = num; } |