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>