• mvc验证码图片生成


     /// <summary>
        ///生成验证码
        /// </summary>
        public class VerifyCode
        {
            /// <summary>
            /// 生成验证码
            /// </summary>
            /// <returns></returns>
            public byte[] GetVerifyCode()
            {
                int codeW = 80;
                int codeH = 30;
                int fontSize = 16;
                string chkCode = string.Empty;
                //颜色列表,用于验证码、噪线、噪点 
                Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue };
                //字体列表,用于验证码 
                string[] font = { "Times New Roman" };
                //验证码的字符集,去掉了一些容易混淆的字符 
                char[] character = { '2', '3', '4', '5', '6', '8', '9', 'a', 'b', 'd', 'e', 'f', 'h', 'k', 'm', 'n', 'r', 'x', 'y', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'W', 'X', 'Y' };
                Random rnd = new Random();
                //生成验证码字符串 
                for (int i = 0; i < 4; i++)
                {
                    chkCode += character[rnd.Next(character.Length)];
                }
                //写入Session、验证码加密
                HttpContext.Current.Session("session_verifycode", MD5PassWordProvider.CutMD5(chkCode.ToLower(),16));
                //创建画布
                Bitmap bmp = new Bitmap(codeW, codeH);
                Graphics g = Graphics.FromImage(bmp);
                g.Clear(Color.White);
                //画噪线 
                for (int i = 0; i < 1; i++)
                {
                    int x1 = rnd.Next(codeW);
                    int y1 = rnd.Next(codeH);
                    int x2 = rnd.Next(codeW);
                    int y2 = rnd.Next(codeH);
                    Color clr = color[rnd.Next(color.Length)];
                    g.DrawLine(new Pen(clr), x1, y1, x2, y2);
                }
                //画验证码字符串 
                for (int i = 0; i < chkCode.Length; i++)
                {
                    string fnt = font[rnd.Next(font.Length)];
                    Font ft = new Font(fnt, fontSize);
                    Color clr = color[rnd.Next(color.Length)];
                    g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), (float)i * 18, (float)0);
                }
                //将验证码图片写入内存流,并将其以 "image/Png" 格式输出 
                MemoryStream ms = new MemoryStream();
                try
                {
                    bmp.Save(ms, ImageFormat.Png);
                    return ms.ToArray();
                }
                catch (Exception)
                {
                    return null;
                }
                finally
                {
                    g.Dispose();
                    bmp.Dispose();
                }
            }
        }
    
    //MD5加密
     #region 将普通字符串转成MD5字符串
        /// <summary>
        /// 将普通字符串转成MD5字符串
        /// </summary>
        public static class MD5PassWordProvider
        {
            public static string Hash(string message)
            {
                if (string.IsNullOrEmpty(message))
                {
                    return string.Empty;
                }
                else
                {
                    MD5 md5 = MD5.Create();
                    byte[] source = Encoding.UTF8.GetBytes(message);
                    byte[] result = md5.ComputeHash(source);
                    StringBuilder buffer = new StringBuilder(result.Length);
    
                    for (int i = 0; i < result.Length; i++)
                    {
                        buffer.Append(result[i].ToString("x"));
                    }
                    return buffer.ToString();
                }
            }
            /// <summary>
            /// MD5加密验证码
            /// </summary>
            public static string CutMD5(string str, int code)
            {
                string strEncrypt = string.Empty;
                if (code == 16)
                {
                    strEncrypt = Hash(str).Substring(8, 16);
                }
                return strEncrypt;
            }
        }
        #endregio

    mvc中使用

    /// <summary>
            /// 生成验证码
            /// </summary>
            [HttpGet]
            public ActionResult VerifyCode()
            {
                return File(new VerifyCode().GetVerifyCode(), @"image/Gif");
            }

    cshtml中显示及刷新

    <img id="login_verifycode" class="login_verifycode" src="~/Login/VerifyCode" alt="点击切换验证码"
                                     title="点击切换验证码"/>
    
    //样式
    .login_verifycode{
        float: right;
        margin-top: 1px;
        display:inline-block;
        text-align:center;
        cursor:pointer;
         100px;
        height: 36px;
        padding-right: 0;
        padding-left: 0;
        /*border: 1px solid #d5d5d5;*/
        font-size: 14px;
        color: #727272;
        background: white;
        margin-left:-4px;
        border-top-right-radius: 5px;
        border-bottom-right-radius: 5px;
    }
    
    //js
    //点击切换验证码
            $("#login_verifycode").click(function () {
                $("#code").val('');//验证码的输入
                $("#login_verifycode").attr("src", contentPath + "/Login/VerifyCode?time=" + Math.random());
            });
  • 相关阅读:
    MVC 以内容字节数组形式 实现文件上传 下载
    iis+php+mysql 错误 Call to undefined function mysql_connect()的解决办法
    IIS环境下快速安装、配置和调试PHP5.2.0
    lineheight 在IE6 下失效的问题 解决办法(已经亲手验证)
    基于SOA的体系架构设计
    图片切割系统,这个比较完整了
    MS SQL Server中文版的預設日期datetime格式是yyyymmdd hh:mm:ss.mmm
    “应用程序或DLL C:\WINDOWS\system32\PNCRT.dll为无效的windows映像”的解决方法
    php操作MySQL数据库语句基础
    播放电影有声音没图像
  • 原文地址:https://www.cnblogs.com/shuaimeng/p/10559301.html
Copyright © 2020-2023  润新知