using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Text;using System.Drawing.Imaging;using System.IO;using System.Drawing; public partial class image : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { string tep = generateCheckCode(4); HttpCookie a = new HttpCookie("image",tep); Response.Cookies.Add(a); //this.validatecode(tep); this.CreateCheckCodeImage(tep); } //生成随机数 private string generateCheckCode(int length) { char[] constant ={ '0','1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e','f','g','h','i','j','k','u','m','l','o','p','q','r','s','t','u','v','w','x','y','z', 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',}; StringBuilder checkcodes = new StringBuilder(62); Random rd = new Random(); for (int i = 0; i < length; i++) { checkcodes.Append(constant[rd.Next(62)]); } return checkcodes.ToString(); } //生成验证码图片 //方法一 private void validatecode(string code) { Bitmap img = null; Graphics g = null; MemoryStream ms = null; int gwidth = code.Length * 12; img = new Bitmap(gwidth, 25); g = Graphics.FromImage(img); //背景颜色 g.Clear(Color.White); Font f = new Font("Arial Black", 10); //文字字体 SolidBrush s = new SolidBrush(Color.Black); //文字颜色 g.DrawString(code, f, s,3,3); ms = new MemoryStream(); img.Save(ms, ImageFormat.Jpeg); Response.ClearContent(); Response.ContentType = "image/jpge"; Response.BinaryWrite(ms.ToArray()); g.Dispose(); img.Dispose(); Response.End(); } //方法二 public void CreateCheckCodeImage(string checkCode) { if (checkCode == null || checkCode.Trim() == String.Empty) return; System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22); Graphics g = Graphics.FromImage(image); try { /**/ ///生成随机生成器 Random random = new Random(); /**/ ///清空图片背景色 g.Clear(Color.White); /**/ ///画图片的背景噪音线 for (int i = 0; i < 25; i++) { int x1 = random.Next(image.Width); int x2 = random.Next(image.Width); int y1 = random.Next(image.Height); int y2 = random.Next(image.Height); g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); } Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true); g.DrawString(checkCode, font, brush, 2, 2); /**/ ///画图片的前景噪音点 for (int i = 0; i < 100; i++) { int x = random.Next(image.Width); int y = random.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(random.Next())); } /**/ ///画图片的边框线 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); Response.ContentType = "image/Gif"; Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); } }} 要在 a.aspx 页面中生成图片验证码,在a 页面中放一个image 图像控件,在pageload中 写入它的imageurl,如上面的代码页面为b.aspx 则为 imageurl=b.aspx

评论