生成验证码
因為樓主運用的是MVC的方式綁定的所以獲取方式如下:
img標(biāo)簽
id=”captcha_img”
οnclick=”document.getElementById(‘captcha_img’).src=document.getElementById(‘captcha_img’).src+’?’” alt=”點擊更換” title=”點擊更換” src=”@Url.Action(“SecurityCode”)” class=”m”
**獲取值 比較**TempData[“SecurityCode”];
region 生成驗證碼圖片
// [OutputCache(Location = OutputCacheLocation.None, Duration = 0, NoStore = false)]public ActionResult SecurityCode(){string oldcode = TempData["SecurityCode"] as string;string code = CreateRandomCode(5);TempData["SecurityCode"] = code;return File(CreateValidateGraphic(code), "image/Jpeg");}/// <summary>/// 創(chuàng)建驗證碼/// </summary>private string CreateRandomCode(int codeCount){string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";string[] allCharArray = allChar.Split(',');string randomCode = "";int temp = -1;Random rand = new Random();for (int i = 0; i < codeCount; i++){if (temp != -1){rand = new Random(i * temp * ((int)DateTime.Now.Ticks));}int t = rand.Next(35);if (temp == t){return CreateRandomCode(codeCount);}temp = t;randomCode += allCharArray[t];}return randomCode;}/// <summary>/// 創(chuàng)建驗證碼的圖片/// </summary>public byte[] CreateValidateGraphic(string validateCode){Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 16.0), 27);Graphics g = Graphics.FromImage(image);try{//生成隨機(jī)生成器Random random = new Random();//清空圖片背景色g.Clear(Color.White);//畫圖片的干擾線for (int i = 0; i < 25; i++){int x1 = random.Next(image.Width);int x2 = random.Next(image.Width);int y1 = random.Next(image.Height);int y2 = random.Next(image.Height);g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);}Font font = new Font("Arial", 13, (FontStyle.Bold | FontStyle.Italic));LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),Color.Blue, Color.DarkRed, 1.2f, true);g.DrawString(validateCode, font, brush, 3, 2);//畫圖片的前景干擾點for (int i = 0; i < 100; i++){int x = random.Next(image.Width);int y = random.Next(image.Height);image.SetPixel(x, y, Color.FromArgb(random.Next()));}//畫圖片的邊框線g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);//保存圖片數(shù)據(jù)MemoryStream stream = new MemoryStream();image.Save(stream, ImageFormat.Jpeg);//輸出圖片流return stream.ToArray();}finally{g.Dispose();image.Dispose();}}#endregion總結(jié)
- 上一篇: 操作系统基础:存储管理知识笔记(一)
- 下一篇: 机器学习数据集的获取和测试集的构建方法