在Asp.Net應用程式中,很多時候登陸頁面以及其他安全重要操作的頁面需要輸入驗證碼,本文提供一個生成驗證碼圖片的工具類,該工具類通過隨機數生成驗證碼文本後,再通過C#中的圖片處理類點陣圖類,字體類,一個LinearGradientBrush類等生成驗證碼圖片。 本文生成圖片驗證碼的採用Asp.Net ...
在Asp.Net應用程式中,很多時候登陸頁面以及其他安全重要操作的頁面需要輸入驗證碼,本文提供一個生成驗證碼圖片的工具類,該工具類通過隨機數生成驗證碼文本後,再通過C#中的圖片處理類點陣圖類,字體類,一個LinearGradientBrush類等生成驗證碼圖片。
本文生成圖片驗證碼的採用Asp.Net中的一般處理程式文件ashx的文件,此文件一般繼承於IHttpHandler的介面,是Asp.Net中一種比較常用的處理文件,比起.ASPX等頁文件來,用ashx的文件生成圖片驗證碼更為高效。
Asp.Net生成圖片驗證碼工具類具體實現如下:
public class Handler:IHttpHandler,System.Web.SessionState.IRequiresSessionState { /// <summary> ///產生用於驗證碼的隨機數 /// </ summary> /// <param name =“number”> < / param> /// <returns> </ returns> public string Get_Code(int number) { # region string s =“0AaB1oCb3pqD2cErf4dFs5GetHI6gu7JKLvhMwNixO8PyQj9zRSkTUVlWmXYnZ”; 隨機rand = new Random(); StringBuilder builder = new StringBuilder(); for(int i = 0; i <number; i ++) { char code = s [rand.Next(s.Length)]; builder.Append(code.ToString()); } return builder.ToString(); #endregion } public void ProcessRequest(HttpContext context) { BLL_User userbll = new BLL_User(); string code = Get_Code(4); //生成驗證碼的四位隨機碼 context.Session [“Code”] = code; 點陣圖圖像=新點陣圖(120,40); 圖形g = Graphics.FromImage(圖像); 試試 { g.Clear(Color.White); 隨機rand = new Random(); for(int i = 0; i <30; i ++) { int x1 = rand.Next(Image.Width); int x2 = rand.Next(Image.Width); int y1 = rand.Next(Image.Height); int y2 = rand.Next(Image.Height); g.DrawLine(new Pen(Color.Silver),x1,y1,x2,y2); } Font font = new Font(“Arial”,20,FontStyle.Italic); LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0,0,Image.Width,Image.Height),Color.Blue,Color.DarkRed,5,true); g.DrawString(代碼,字體,畫筆,3,2); g.DrawRectangle(new Pen(Color.Silver),0,0,Image.Width - 1,Image.Height - 1); System.IO.MemoryStream stream = new System.IO.MemoryStream(); Image.Save(stream,ImageFormat.Gif); context.Response.Clear(); context.Response.ContentType =“image / Gif”; context.Response.BinaryWrite(stream.ToArray()); } finally { g.Dispose(); Image.Dispose(); } } public BOOL IsReusable { get { return false; } } }
在上述代碼中,.ashx的文件類繼承了System.Web.SessionState.IRequiresSessionState介面,主要是為了能夠在.ashx的文件中能訪問到會話變數,並將生成好的驗證碼信息存入會話中。
在網路前端界面要生成二維碼圖片的時候,直接將IMG標簽的圖片路徑的src屬性指向這個ashx的文件,例如這個.ashx的文件在網路項目中存放在根目錄並且命名為ValidateCode.ashx,則在HTML文件中直接如下形式即可生成驗證碼圖片:
<img src =“ValidateCode.ashx”此處編寫其他屬性/>
備註:原文轉載自博主個人站IT技術小趣屋,原文鏈接為Asp.Net生成圖片驗證碼工具類_IT技術小趣屋。