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="width: 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>
posted on 2016-12-15 15:07  fei!  阅读(271)  评论(0编辑  收藏  举报