您的位置:首页 > 编程语言 > C#

C#生成图片验证码

2016-07-11 23:47 495 查看
 /// <summary>

    /// 创建验证码的图片

    /// </summary>

    /// <param name="containsPage">要输出到的page对象</param>

    /// <param name="validateNum">验证码</param>

    public void CreateValidateGraphic(string validateCode, HttpContext context)

    {

        Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 12.0), 22);

        Graphics g = Graphics.FromImage(image);

        try

        {

            //生成随机生成器

            Random random = new Random();

            //清空图片背景色

            g.Clear(Color.White);

            //画图片的干扰线

            for (int i = 0; i < 25; i++)

            {

                int x1 = random.Next(image.Width);

                int x2 = random.Next(image.Width);

                int y1 = random.Next(image.Height);

                int y2 = random.Next(image.Height);

                g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);

            }

            Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));

            System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),

             Color.Blue, Color.DarkRed, 1.2f, true);

            g.DrawString(validateCode, font, brush, 3, 2);

            //画图片的前景干扰点

            for (int i = 0; i < 100; i++)

            {

                int x = random.Next(image.Width);

                int y = random.Next(image.Height);

                image.SetPixel(x, y, Color.FromArgb(random.Next()));

            }

            //画图片的边框线

            g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);

            //保存图片数据

            MemoryStream stream = new MemoryStream();

            image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);

            //输出图片流

            context.Response.Clear();

            context.Response.ContentType = "image/jpeg";

            context.Response.BinaryWrite(stream.ToArray());

        }

        finally

        {

            g.Dispose();

            image.Dispose();

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: