【转载】Asp.Net生成图片验证码工具类
程序员文章站
2023-11-07 11:10:16
在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技术小趣屋。
上一篇: 生腰果能直接吃吗
下一篇: SEO学习中如何更好的吸取别人的经验