asp.net生成图片验证码
生成图片部分是《ASP.NET从入门到精通》书上的例子------------------------------------
首先,Login页面
<img src="CreateImage.aspx" onclick="this.src='CreateImage.aspx'" alt="点击刷新" style="cursor:pointer" />
其次,生成图片:CreateImage.aspx代码如下
public partial class CreateImage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string validateString = CreateRandomNumber(4); Createimage(validateString); Session["ValidateString"] = validateString; } } private string CreateRandomNumber(int numberCount) { string allChar = "1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,g,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"; string[] allCharArr = allChar.Split(','); string randomNumber = ""; Random rand = new Random(); int temp = -1; for (int i = 0; i < numberCount; i++) { if (temp != -1) { rand = new Random(i*temp*(int)(DateTime.Now.Ticks)); } int t = rand.Next(35); if (t == temp) { return CreateRandomNumber(numberCount); } temp = t; randomNumber += allCharArr[t]; } return randomNumber; } private void Createimage(string validateString) { if (validateString == null || validateString.Trim() == string.Empty) { return; } //create a bitmap image Bitmap image = new Bitmap(validateString.Length * 12 + 10, 22); Graphics g = Graphics.FromImage(image); try { //随机生成器 Random rand = new Random(); g.Clear(Color.White); for (int i = 0; i < 25; i++) { int x1 = rand.Next(image.Width); int x2 = rand.Next(image.Width); int x3 = rand.Next(image.Height); int x4 = rand.Next(image.Height); g.DrawLine(new Pen(Color.Silver), x1, x2, x3, x4); } Font font = new Font("Arial", 12, FontStyle.Bold); LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true); g.DrawString(validateString, font, brush, 2, 2); //绘制图片的前景噪声点 for (int i = 0; i < 100; i++) { int x = rand.Next(image.Width); int y = rand.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(rand.Next())); } //绘制图片的边框 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); MemoryStream ms = new MemoryStream(); //将图像保存在指定的流 image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); //Response.CacheControl = "no-cache"; Response.ContentType = "image/Gif"; Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); } } }
还是挺好看的,备用。。。。。。。