当前位置:首页 > 网络编程 > 软件语言 > .NET > 一个自动生成图片验证码的类

一个自动生成图片验证码的类

点击次数:53 次 发布日期:2008-11-06 08:05:24 作者:源代码网
源代码网推荐
广告载入中
下面是类的代码,有一些简单的注释,能看明白了.嘿嘿! Imports System Imports System.Drawing.Drawing2D Imports System.Drawing.imaging Imports System.Drawing Imports System.Web.UI Imports System.IO Namespace Validate Public Class CreatValidateNumber "生成验证码 Public Function CreatValidateNumber(ByVal length As Integer) As String Dim randNumber() As Integer = New Integer(length) {} Dim ValidateNumber() As Integer = New Integer(length) {} Dim ValidateNumberStr As String = "" Dim seekseek As Integer = CInt(DateTime.Now.Second) Dim seekrand As Random = New Random(seekseek) Dim beginseek = Int(seekrand.Next(0, Int32.MaxValue - length * 10000)) Dim seeks() As Integer = New Integer(length) {} Dim i As Integer "生成起始序列值 For i = 0 To length - 1 beginseek += 10000 seeks(i) = beginseek Next "生成随机数字 For i = 0 To length - 1 Dim rand As Random = New Random(seeks(i)) Dim pownum As Integer = 1 * Int(Math.Pow(10, length)) randNumber(i) = rand.Next(pownum, Int32.MaxValue) Next "抽取随机数字 For i = 0 To length - 1 Dim numstr As String = randNumber(i).ToString Dim numlength As Integer = numstr.Length Dim rand As New Random Dim numPosition As Integer = rand.Next(0, numlength - 1) ValidateNumber(i) = Int32.Parse(numstr.Substring(numPosition, 1)) Next "生成验证码 For i = 0 To length - 1 ValidateNumberStr += ValidateNumber(i).ToString Next Return ValidateNumberStr End Function "创建验证码图片 Public Sub CreatevalidateGraphic(ByVal page As Page, ByVal validatenum As String) Dim image As Bitmap = New Bitmap(CInt(Math.Ceiling(validatenum.Length * 12.5)), 22) Dim g As Graphics = Graphics.FromImage(image) Try "生成随机生成器 Dim random As New Random "清空图片背景色 g.Clear(Color.White) "画图片的干扰线 Dim i As Integer For i = 0 To 24 Dim x1 As Integer = random.Next(image.Width) Dim x2 As Integer = random.Next(image.Width) Dim y1 As Integer = random.Next(image.Height) Dim y2 As Integer = random.Next(image.Height) g.DrawLine(New Pen(Color.Silver), x1, y1, x2, y2) Next "画验证码 Dim font As Font = New Font("Arial", 12, (FontStyle.Bold And FontStyle.Italic)) Dim brush As LinearGradientBrush = New LinearGradientBrush(New Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2F, True) g.DrawString(validatenum, font, brush, 3, 2) "画前景干扰点 For i = 0 To 24 Dim x As Integer = random.Next(image.Width) Dim y As Integer = random.Next(image.Height) image.SetPixel(x, y, Color.FromArgb(random.Next())) Next "画图片的边框线 g.DrawRectangle(New Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1) "保存图片 Dim stream As New MemoryStream image.Save(stream, ImageFormat.Jpeg) "输出图片 page.Response.Clear() page.Response.ContentType = "image/jpeg" page.Response.BinaryWrite(stream.ToArray()) Catch ex As Exception Finally g.Dispose() image.Dispose() End Try End Sub End Class End Namespace 下面是这个类的引用一个小例子 HTML部份: <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="ValidateNumber.WebForm1"%> DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> WebForm1title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> HEAD> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server"> <FONT face="宋体"><% validates.CreatevalidateGraphic(Me, vali) %>FONT> form> body> HTML> 程序部份: Public Class WebForm1 Inherits System.Web.UI.Page Web 窗体设计器生成的代码 Public validates As New Validate.CreatValidateNumber Public vali As String Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load "在此处放置初始化页的用户代码 vali = validates.CreatValidateNumber(5) "validate.CreatevalidateGraphic(Me, vali) End Sub End Class</div><br><span class=yycc>源代码网推荐</span> <div><center><SPAN id=google_adsense></SPAN> <SPAN id=span_google_adsense><!--GGADSENSE--></SPAN> </center></div> </DIV> <br /> <DIV class=clear></DIV><span class=yycc>源代码网供稿.</span></td></tr></table> </div> <script type="text/javascript"><!-- google_ad_client = "pub-0717934401688269"; /* ydm8最终页标题上内容下 */ google_ad_slot = "0579630423"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> <div id="bd13"></div> <div id="next_to">上一篇: <a href=/xinwen_1952.html>在ASP.NET 2.0中直接得到本页面生成的HTML代码</a>  下一篇: <a href=/xinwen_1954.html>vb.net验证码的实现</a></div> <div id="comment"> <div class="title2"> <div class="chinese2">网友评论 (0)</div> <div class="english2"><a href="#comment_set">我也要写评论</a></div> </div> <a name="comment_set"> <script src="/php/text_pl.php?id=1953" language=javascript></script> </div> <div id="relate_art"> <div class="title2"> <div class="chinese2">一个自动生成图片验证码的类的相关新闻</div> <div class="english2"></div> </div> <ul> <li><a href="/xinwen_347.html" target=_blank>Java运算符优先级</a> </li><li><a href="/xinwen_348.html" target=_blank>JSF与WEB完美组合 提高开发效率</a> </li><li><a href="/xinwen_349.html" target=_blank>Java中四种XML解析技术</a> </li><li><a href="/xinwen_350.html" target=_blank>整合一个struts2和spring2</a> </li><li><a href="/xinwen_351.html" target=_blank>JavaBean实现多文件上传</a> </li><li><a href="/xinwen_352.html" target=_blank>treeViewer中setSelection()的用法</a> </li></ul><ul><li><a href="/xinwen_353.html" target=_blank>Eclipse 使用技巧</a> </li><li><a href="/xinwen_354.html" target=_blank>把图片文件存储到Oracle的存储过程的方法</a> </li><li><a href="/xinwen_355.html" target=_blank>如何在oracle的存储过程里调用动态变量</a> </li><li><a href="/xinwen_356.html" target=_blank>加密Oracle中的存储过程的方法</a> </li><li><a href="/xinwen_357.html" target=_blank>在Bean中调用oracle存储过程</a> </li><li><a href="/xinwen_358.html" target=_blank>Java开发者必须遵循的十大基本准则</a> </li></ul><ul><li><a href="/xinwen_359.html" target=_blank>用正则表达式来解析SQL语句的类</a> </li><li><a href="/xinwen_360.html" target=_blank>Java1.5泛型概述</a> </li><li><a href="/xinwen_361.html" target=_blank>String类的intern()方法</a> </li><li><a href="/xinwen_993.html" target=_blank>C#实现对文件的操作</a> </li><li><a href="/xinwen_994.html" target=_blank>漫谈.Net中的命名空间和目录划分</a> </li><li><a href="/xinwen_995.html" target=_blank>C#中关于变量的命名和属性</a> </li></ul><ul> </ul> </div> </div> <div id="index6"> <div class="title5">会员中心</div> <div id="user"> <script src=/php/denglu.php language=javascript></script> </div> <div class="title5">网络编程</div> <div id="sort1"> <ul> <li><a href="/xinwenlei_9.html" >软件语言</a></li><li><a href="/xinwenlei_11.html" >数据库</a></li><li><a href="/xinwenlei_12.html" >WEB编程</a></li><li><a href="/xinwenlei_13.html" >软件开发</a></li><li><a href="/xinwenlei_14.html" >IT认证</a></li><li><a href="/xinwenlei_102.html" >新手教程</a></li> </ul> </div> <!-- 右侧导航广告 --> <div class="title5">本站推荐</div> <div id="sort1"> <script type="text/javascript"><!-- google_ad_client = "pub-0717934401688269"; /* 180x150, 源码最终页右侧 */ google_ad_slot = "3489132309"; google_ad_width = 180; google_ad_height = 150; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </div> <div class="title5">网络编程之精华</div> <div id="domain"> <ul> <li><a href="/xinwen_1913.html" target=_blank>C# 程序员参考--数组教程</a> </li><li><a href="/xinwen_106.html" target=_blank>ASP按照字数的限制,自动截</a> </li><li><a href="/xinwen_1376.html" target=_blank>Asp.net页面之间传递参数的</a> </li><li><a href="/xinwen_1033.html" target=_blank>c#判断字符串是否为数字</a> </li><li><a href="/xinwen_347.html" target=_blank>Java运算符优先级</a> </li><li><a href="/xinwen_379.html" target=_blank>access转mysql,sql serve</a> </li><li><a href="/xinwen_1042.html" target=_blank>C#中动态数组ArrayList应用</a> </li><li><a href="/xinwen_1225.html" target=_blank>C#抽象类与接口的比较</a> </li><li><a href="/xinwen_1276.html" target=_blank>java与c#中二维数组的区别</a> </li><li><a href="/xinwen_1346.html" target=_blank>C#中如何创建Xml文件</a> </li> </ul> </div> </div> </div> <!-- 通栏广告 --> <div id="bd3"> <script type="text/javascript"><!-- google_ad_client = "pub-0717934401688269"; /* 728x90, 源码最终页底部 */ google_ad_slot = "8551407955"; google_ad_width = 728; google_ad_height = 90; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </div> <div id="head2_1_result" style="display:none;"> <div id="menu1"> <div id="menu_tab1" class="menu_bg2" onmouseover=menu(1) >  <a href="/">首页</a> </div> <div class="menu_tab0"></div> <div id="menu_tab2" class="menu_bg1" onmouseover=menu(2) ><a href="/xinwenlei_2.html">新闻资讯</a></div> <div class="menu_tab0"></div> <div id="menu_tab3" class="menu_bg1" onmouseover=menu(3) ><a href="/xinwenlei_3.html">网站运营</a></div> <div class="menu_tab0"></div> <div id="menu_tab4" class="menu_bg1" onmouseover=menu(4) ><a href="/xinwenlei_4.html">网络编程</a></div> <div class="menu_tab0"></div> <div id="menu_tab5" class="menu_bg1" onmouseover=menu(5) ><a href="/xinwenlei_5.html">设计在线</a></div> <div class="menu_tab0"></div> <div id="menu_tab6" class="menu_bg1" onmouseover=menu(6) ><a href="/xinwenlei_7.html">服务器类</a></div> <div class="menu_tab0"></div> <div id="menu_tab7" class="menu_bg1" onmouseover=menu(7) ><a href="http://www.ydm8.com/yuming/" target=_blank>域名空间</a></div><div class="menu_tab0"></div> <div id="menu_tab8" class="menu_bg1" onmouseover=menu(8) ><a href="http://tool.ydm8.com/" target=_blank>站长工具</a></div><div class="menu_tab0"></div> <div id="menu_tab9" class="menu_bg1" onmouseover=menu(9) ><a href="http://soft.ydm8.com" target=_blank>软件下载</a></div><div class="menu_tab0"></div> <div id="menu_tab10" class="menu_bg1" onmouseover=menu(10) ><a href="/user/login.php" target=_blank>我的源代码</a></div><div class="menu_tab0"></div> </div> <div id="menu_con1" class="menu2"> <form action="/sousuo.html" name="sForm" id="sForm" method="get"> <a href="http://www.soft.ydm8.com/soft.html" target=_blank><b><u>点击查看所有软件分类</u></b></a> | 源代码网搜索:<input type="text" id="kw" name="key" size="45" maxlength="100" value="" /> <input type="submit" value="内容搜索" /></td> <span><b>热门搜索:</b></span><a href="/sousuo.html?key=asp" target=_blank>asp</a><a href="/sousuo.html?key=php" target=_blank>php</a><a href="/sousuo.html?key=jsp" target=_blank>jsp</a> </form> </div> <div id="menu_con2" class="menu3"> <a href="/xinwenlei_91.html">站长新闻</a>| <a href="/xinwenlei_92.html">业界动态</a>| <a href="/xinwenlei_93.html">收购融资</a>| <a href="/xinwenlei_94.html">门户动态</a>| <a href="/xinwenlei_95.html">搜索引擎</a>| <a href="/xinwenlei_96.html">网络游戏</a>| <a href="/xinwenlei_97.html">电子商务</a>| <a href="/xinwenlei_98.html">广告传媒</a>| <a href="/xinwenlei_99.html">厂商开发</a>| <a href="/xinwenlei_100.html">访谈</a>| <a href="/xinwenlei_104.html">站长休闲</a>| </div> <div id="menu_con3" class="menu3"> <a href="/xinwenlei_86.html">建站运营</a>| <a href="/xinwenlei_87.html">策划盈利</a>| <a href="/xinwenlei_88.html">seo搜索优化</a>| <a href="/xinwenlei_89.html">网站推广</a>| <a href="/xinwenlei_90.html">免费资源</a>| <a href="/xinwenlei_101.html">经验心得</a>| <a href="/xinwenlei_103.html">域名</a>| <a href="/xinwenlei_105.html">广告联盟</a>| <a href="/xinwenlei_110.html">站长入门</a>| </div> <div id="menu_con4" class="menu3"> <a href="/xinwenlei_9.html">软件语言</a>| <a href="/xinwenlei_11.html">数据库</a>| <a href="/xinwenlei_12.html">WEB编程</a>| <a href="/xinwenlei_13.html">软件开发</a>| <a href="/xinwenlei_14.html">IT认证</a>| <a href="/xinwenlei_102.html">新手教程</a>| </div> <div id="menu_con5" class="menu3"> <a href="/xinwenlei_51.html">网页设计</a>| <a href="/xinwenlei_52.html">平面动画</a>| <a href="/xinwenlei_53.html">设计作品</a>| <a href="/xinwenlei_54.html">程序应用</a>| </div> <div id="menu_con6" class="menu3"> <a href="/xinwenlei_55.html">Windows服务器</a>| <a href="/xinwenlei_56.html">Linux服务器</a>| <a href="/xinwenlei_109.html">Unix</a>| <a href="/xinwenlei_57.html">Mail服务器</a>| <a href="/xinwenlei_58.html">Dns服务器</a>| <a href="/xinwenlei_60.html">FTP服务器</a>| <a href="/xinwenlei_61.html">安全防护</a>| </div> <div id="menu_con7" class="menu3"> </div> <div id="menu_con8" class="menu3">    <a href="http://tool.ydm8.com/baidu/" target=_blank><u>百度每日收录查询</u></a>        <a href="http://tool.ydm8.com/google/" target=_blank><u>GOOGLE每日收录查询</u></a>        <a href="http://tool.ydm8.com/baidu/key/" target=_blank><u>关键词百度排名查询</u></a>        <a href="http://tool.ydm8.com/google/key/" target=_blank><u>关键词GOOGLE排名查询</u></a> </div> <div id="menu_con9" class="menu3"> <a href="http://soft.ydm8.com/softlei_7.html">网络软件</a>| <a href="http://soft.ydm8.com/softlei_8.html">系统工具</a>| <a href="http://soft.ydm8.com/softlei_9.html">应用软件</a>| <a href="http://soft.ydm8.com/softlei_16.html">联络聊天</a>| <a href="http://soft.ydm8.com/softlei_17.html">图形图像</a>| <a href="http://soft.ydm8.com/softlei_18.html">多媒体类</a>| <a href="http://soft.ydm8.com/softlei_19.html">行业软件</a>| <a href="http://soft.ydm8.com/softlei_20.html">游戏娱乐</a>| <a href="http://soft.ydm8.com/softlei_21.html">编程开发</a>| <a href="http://soft.ydm8.com/softlei_22.html">安全相关</a>| <a href="http://soft.ydm8.com/softlei_23.html">教育教学</a>| <a href="http://soft.ydm8.com/softlei_178.html">手机软件</a>| </div> <div id="menu_con10" class="menu3"> <font color=#000000>从源代码网这里可以发表您自己喜欢的原创文章,同时也希望您的发表能给很多人带来帮助。</font> </div> </div> <script language="javascript"> document.getElementById("head2_1").innerHTML = document.getElementById("head2_1_result").innerHTML; </script> <!--底部--> <div id="foot"> <a href="http://www.ydm8.com" title="源代码网" target="_blank"><span>源代码网</span></a><span>版权所有 2008</span> <a href="http://www.ydm8.com" title="源代码网"><span>YDM8.COM</span></a> <a href="http://www.miibeian.gov.cn/" target="_blank"><span>京ICP备08100796号</span></a> </div> <span style=display:none><script language="javascript" type="text/javascript" src="http://js.users.51.la/2317140.js"></script> <noscript><a href="http://www.51.la/?2317140" target="_blank"><img alt="我要啦免费统计" src="http://img.users.51.la/2317140.asp" style="border:none" /></a></noscript></div> <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try { var pageTracker = _gat._getTracker("UA-5953062-2"); pageTracker._trackPageview(); } catch(err) {}</script></body> </html>