• MVC图片验证码


     C#类库:

     public class YZM
        {
            public string YZMcode = String.Empty;
          
            public byte[] load()
            {
    
                Bitmap bit = new Bitmap(90, 40);//画布大小
                Graphics g = Graphics.FromImage(bit);//创建绘制对象,告诉它往哪张图片上绘制
                try { 
                
                Random r = new Random();
                Color color1 = Color.FromArgb(r.Next(155, 255), r.Next(155, 255), r.Next(155, 255));
                g.FillRectangle(new SolidBrush(color1), 0, 0, 90, 40);//画布颜色随机
                for (int i = 0; i < 10; i++)//随机画干扰线
                {
                    Color color3 = Color.FromArgb(r.Next(170, 255), r.Next(190, 255), r.Next(170, 255));
                    Pen pp = new Pen(new SolidBrush(color3), r.Next(0, 5));
                    g.DrawLine(pp, r.Next(0, 90), r.Next(0, 40), r.Next(0, 90), r.Next(0, 40));
                }
    
    
                string yan = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";//设置随机的验证码,从里面抽取
                int wei = 0;
                for (int i = 0; i < 4; i++)//取四位验证码,颜色随机
                {
                    string m = yan.Substring(r.Next(0, yan.Length), 1);
                    YZMcode += m;
                    Color color2 = Color.FromArgb(r.Next(0, 155), r.Next(0, 155), r.Next(0, 155));
                    int w = r.Next(20, 25);
                    Font f = new Font("黑体", w);
                    SolidBrush b = new SolidBrush(color2);
    
                    g.DrawString(m, f, b, wei, r.Next(0, 10));
                    wei += w;
                }
    
                for (int i = 0; i < 251; i++)
                {
                    Color color3 = Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255));
                    Pen pp = new Pen(new SolidBrush(color3), r.Next(0, 5));
                    int a = r.Next(0, 90);
                    int b = r.Next(0, 40);
                    g.DrawLine(pp, a, b, (a + 1), (b + 1));
                }
    
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                bit.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                return ms.ToArray();
                }
                finally { 
                   g.Dispose();//释放绘图对象
                    bit.Dispose();//释放图像对象
                }
               
               
                 
            
            }
    
        }

    action:

     public FileContentResult yIndex()
            {
                YZM y = new YZM();
                byte[] bytes = y.load();
                Session["yzm"] = y.YZMcode;
                return File(bytes, @"image/jpeg");
            }

    HTML:

    <img alt="验证码图片"  id="img" src="@Url.Action("yIndex","Home")" style=" 100px; height: 38px; border: 1px solid #ddd; margin-bottom: -15px;"  />
                        <a href="#" onclick="fun()"  style="color: #1b66c7">换一张</a>

    js:

    <script>
        var i = 0;
             function fun()
             {
                 $("#img")[0].src = $("#img")[0].src + "?" +i;
                 i++;
             }
    </script>
  • 相关阅读:
    LeetCode 120:三角形最小路径和
    守护进程
    G711时间戳增量和数据包大小的关系
    H264防止竞争机制
    硬编码帧率错误导致的浏览器不能播放的问题
    GCC inline
    单例模式的双检锁的隐患和优化
    Java中异常捕获子类异常捕获在父类异常前面,即小范围先被捕获
    线程运行流程图
    将二维数组转为稀疏数组
  • 原文地址:https://www.cnblogs.com/zblc2016/p/6183334.html
Copyright © 2020-2023  润新知