using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Web; namespace 动态验证码生成 { /// <summary> /// Handler1 的摘要说明 /// </summary> public class Handler1 : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "image/jpeg"; var bmp = GetVerCode(); bmp.Save(context.Response.OutputStream, ImageFormat.Jpeg); //context.Response.Write("Hello World"); } /// <summary> /// 生成验证码 /// </summary> /// <returns></returns> private static Bitmap GetVerCode() { Random r = new Random(); string str = null; for (int i = 0; i < 4; i++) { int rNumber = r.Next(0, 10); str += rNumber; } //创建GDI对象 Bitmap bmp = new Bitmap(100, 40); Graphics g = Graphics.FromImage(bmp); for (int i = 0; i < 4; i++) { Point p = new Point(i * 20, 0); string[] fonts = {"微软雅黑", "宋体", "黑体", "隶书"}; Color[] colors = {Color.Yellow, Color.Blue, Color.Black, Color.Red, Color.Green}; g.DrawString(str[i].ToString(), new Font(fonts[r.Next(0, 4)], 20, FontStyle.Bold), new SolidBrush(colors[r.Next(0, 4)]), p); } for (int i = 0; i < 20; i++) { Point p1 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height)); Point p2 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height)); g.DrawLine(new Pen(Brushes.Green), p1, p2); } for (int i = 0; i < 500; i++) { Point p = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height)); bmp.SetPixel(p.X, p.Y, Color.Black); } return bmp; } public bool IsReusable { get { return false; } } } }