首页 > 学院 > 开发设计 > 正文

随机生成验证码

2019-11-14 16:10:21
字体:
来源:转载
供稿:网友
using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;using System.IO;using System.Linq;namespace Letter.Data.Command{    public class ValidateCode    {        /// <summary>        /// 创建验证码的图片        /// </summary>        /// <param name="validateCode">验证码</param>        public byte[] CreateValidateGraphic(string validateCode)        {                        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));                LinearGradientBrush brush = new 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, ImageFormat.Jpeg);                //输出图片流                return stream.ToArray();            }            finally            {                g.Dispose();                image.Dispose();            }        }        /// <summary>        /// 生成数字随机码        /// </summary>        /// <param name="count">随机位数</param>        /// <returns></returns>        public string CreateValidateCode(int count)        {            Random r = new Random();            string code = string.Empty;            for (int i = 0; i < count; i++)            {                code += r.Next(0, 9)+"";            }            return code;        }    }}

 

controller调用

/// <summary>        /// 获取验证码        /// </summary>        /// <returns></returns>        public ActionResult GetValidateCode()        {            ValidateCode vCode = new ValidateCode();            string code = vCode.CreateValidateCode(4);            session["ValidateCode"] = code;            byte[] bytes = vCode.CreateValidateGraphic(code);            return File(bytes, @"image/jpeg");        }

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表