验证码生成

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.IO;

namespace Helper
{
    public class VCode
    {
        /// <summary>
        /// 生成验证码图片 字节数组
        /// </summary>
        /// <returns></returns>
        public byte[] GetVCode()
        {
            using (Image img = new Bitmap(80, 30))
            {
                string strCode = GetRandomStr();
                HttpContext.Current.Session["vcode"] = strCode;
                using (Graphics g = Graphics.FromImage(img))
                {
                    g.Clear(Color.White);
                    g.DrawRectangle(Pens.Blue, 0, 0, img.Width - 1, img.Height - 1);
                    DrawPoint(g);
                    g.DrawString(strCode, new Font("微软雅黑", 15), Brushes.Blue, new PointF(5, 2));
                    DrawPoint(g);
                    using (System.IO.MemoryStream ms = new MemoryStream())
                    {
                        //将图片 保存到内存流中
                        img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                        //将内存流 里的 数据  转成 byte 数组 返回
                        return ms.ToArray();
                    }
                }
            }
            return null;
        }


        Random random = new Random();

        string GetRandomStr()
        {
            string str = string.Empty;
            string[] strArr = { "a", "b", "b", "", "1", "2", "", "3", "4", "5", "6", "7", "8", "9", "0" };
            for (int i = 0; i < 5; i++)
            {
                int index = random.Next(strArr.Length);
                str += strArr[index];
            }
            return str;
        }

        void DrawPoint(Graphics g)
        {
            Pen[] pens = { Pens.Blue, Pens.Black, Pens.Red, Pens.Green };
            Point p1;
            Point p2;
            int length = 1;
            for (int i = 0; i < 50; i++)
            {
                p1 = new Point(random.Next(79), random.Next(29));
                p2 = new Point(p1.X - length, p1.Y - length);
                length = random.Next(5);
                g.DrawLine(pens[random.Next(pens.Length)], p1, p2);
            }
        }
    }
}
生成验证码
/// <summary>
        /// 生成验证码
        /// </summary>
        /// <returns></returns>
        public ActionResult VCode()
        {
            Helper.VCode v = new Helper.VCode();
            byte[] arrImg = v.GetVCode();
            return File(arrImg, "image/jpeg");
        }
原文地址:https://www.cnblogs.com/xiaoyangshu/p/12297726.html