ASP.NET中常用功能代码总结(2)——生成验证图片

ASP.NET中常用功能代码总结(2——生成验证图片

整理:Terrylee

生成随机的验证图片

使用方法:

1///调用函数将验证码生成图片
2            this.CreateCheckCodeImage(GenerateCheckCode());

 1/// <summary>
 2        /// 产生五位的随机字符串
 3        /// </summary>
 4        /// <returns></returns>

 5        private string GenerateCheckCode()
 6        {  
 7            int number;
 8            char code;
 9            string checkCode = String.Empty;
10
11            System.Random random = new Random();
12
13            for (int i = 0; i < 5; i++)
14            {
15                number = random.Next();
16
17                if (number % 2 == 0)
18                    code = (char)('0' + (char)(number % 10));
19                else
20                    code = (char)('A' + (char)(number % 26));
21
22                checkCode += code.ToString();
23            }

24
25            ///用于客户端校验码比较
26            Session["CheckCode"= checkCode;
27
28            return checkCode;
29        }

30        
31        /// <summary>
32        /// 将验证码生成图片显示
33        /// </summary>
34        /// <param name="checkCode"></param>

35        private void CreateCheckCodeImage(string checkCode)
36        {  
37            if (checkCode == null || checkCode.Trim() == String.Empty)
38                return;
39
40            System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
41            Graphics g = Graphics.FromImage(image);
42
43            try
44            {
45                ///生成随机生成器 
46                Random random = new Random();
47
48                ///清空图片背景色 
49                g.Clear(Color.White);
50
51                ///画图片的背景噪音线 
52                for (int i = 0; i < 25; i++)
53                {
54                    int x1 = random.Next(image.Width);
55                    int x2 = random.Next(image.Width);
56                    int y1 = random.Next(image.Height);
57                    int y2 = random.Next(image.Height);
58
59                    g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
60                }

61
62                Font font = new System.Drawing.Font("Arial"12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
63                System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(00, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2ftrue);
64                g.DrawString(checkCode, font, brush, 22);
65
66                ///画图片的前景噪音点 
67                for (int i = 0; i < 100; i++)
68                {
69                    int x = random.Next(image.Width);
70                    int y = random.Next(image.Height);
71
72                    image.SetPixel(x, y, Color.FromArgb(random.Next()));
73                }

74
75                ///画图片的边框线 
76                g.DrawRectangle(new Pen(Color.Silver), 00, image.Width - 1, image.Height - 1);
77
78                System.IO.MemoryStream ms = new System.IO.MemoryStream();
79                image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
80                Response.ClearContent();
81                Response.ContentType = "image/Gif";
82                Response.BinaryWrite(ms.ToArray());
83            }

84            finally
85            {
86                g.Dispose();
87                image.Dispose();
88            }

89        }
posted @ 2005-11-30 17:11  TerryLee  阅读(2207)  评论(2编辑  收藏  举报