資源描述:
《asp.net簡單的圖片驗證碼》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、簡單的圖片驗證碼前幾天在網(wǎng)上找了關(guān)于圖片驗證碼的一些資料,經(jīng)過整理,已經(jīng)能實現(xiàn)簡單的圖片驗證碼,以下代碼為實現(xiàn)圖片驗證碼的詳細(xì)代碼,帖出來共享下,哈哈!整個思路大概是:首先生成一個驗證碼的隨機(jī)數(shù),并用cookies保存產(chǎn)生的隨機(jī)數(shù),后面我們驗證的時候得用到,生成隨機(jī)數(shù)后就是畫圖片了,具體的代碼如下:(有更好的辦法還望大家指教!)//首先創(chuàng)建一個CheckImage.aspx頁面,前臺沒代碼,后臺代碼如下:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usin
2、gSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.IO;usingSystem.Drawing;usingSystem.Drawing.Imaging;publicpartialclassCheckImage:System.Web.UI.Page{protectedvoidPage
3、_Load(objectsender,EventArgse){//在page_load事件中調(diào)用Generate()和CreateCheckCodeImage()函數(shù)stringstr=GenerateCheckCode();CreateCheckCodeImage(str);}privatestringGenerateCheckCode(){//利用random()隨機(jī)產(chǎn)生四位大寫的字符串(包含數(shù)字和字母)intnumber;charcode;stringcheckCode=string.Empty;Randomrandom=newRandom();for(inti
4、=0;i<4;i++){number=random.Next();//下面也可以用其他的方法構(gòu)思if(number%2==0)code=(char)('0'+(char)(number%10));elsecode=(char)('A'+(char)(number%26));checkCode+=code.ToString();}//用cookies保存剛剛產(chǎn)生的隨機(jī)字符串Response.Cookies.Add(newHttpCookie("CheckCode",checkCode));returncheckCode;}privatevoidCreateCheckCo
5、deImage(stringcheckCode){//該函數(shù)主要是畫背景色的if(checkCode==null
6、
7、checkCode.Trim()==string.Empty)return;System.Drawing.Bitmapimage=newSystem.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length*12.5)),22);Graphicsg=Graphics.FromImage(image);try{//生成隨機(jī)生成器Randomrandom=newRandom();//清空背景色g.Clear(Col
8、or.White);//畫圖片的背景for(inti=0;i<2;i++){intx1=random.Next(image.Width);intx2=random.Next(image.Width);inty1=random.Next(image.Height);inty2=random.Next(image.Height);g.DrawLine(newPen(Color.Black),x1,y1,x2,y2);}Fontfont=newSystem.Drawing.Font("Arial",12,(System.Drawing.FontStyle.Bold));Sy
9、stem.Drawing.Drawing2D.LinearGradientBrushbrush=newSystem.Drawing.Drawing2D.LinearGradientBrush(newRectangle(60,60,image.Width,image.Height),Color.Blue,Color.DarkRed,1.2f,true);g.DrawString(checkCode,font,brush,2,2);//畫圖片的前景for(inti=0;i<100;i++){intx=random.Next(image.Width);in