using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Drawing; //因为用到GDI+绘图,所以引入对应命名空间; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { CreateImage(RandomNum(4)); } protected string RandomNum(int n) //数字字母验证码 { string strchar = "0,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[] VcArray = strchar.Split(','); //以,为标志分割 string VNum = ""; int temp = -1; Random rand = new Random(); for (int i = 0; i < n; i++) { if (temp != -1) //防止生成相同的验证码 { rand = new Random(i * temp * (int)DateTime.Now.Ticks); } int t = rand.Next(35); if (temp != -1 && temp == t) { return RandomNum(n); //相等的话重新生成 } temp = t; VNum += VcArray[t]; } Session["Valid"] = VNum; return VNum; } protected void CreateImage(string validCode) { int iWidth = (int)(validCode.Length * 14); Bitmap bImage = new Bitmap(iWidth, 20); //创建规格为指定,单位为像素(px)的位图; Graphics grap = Graphics.FromImage(bImage); //绘图对象 Font f = new Font("Arial", 10, FontStyle.Bold); //选择绘图用的字体规格; Brush b = new SolidBrush(Color.White); //选择绘图用的刷子。 grap.Clear(Color.Blue); //设置背景色; grap.DrawString(validCode, f, b, 3, 3); System.IO.MemoryStream ms = new System.IO.MemoryStream(); bImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); //转换为jpeg格式图; Response.ClearContent(); Response.ContentType = "image/jpeg"; Response.BinaryWrite(ms.ToArray()); //把MemoryStream转换为数组,即字节流Byte[]; grap.Dispose(); //清空资源 bImage.Dispose(); } protected int RandomNumber() //最简单的4位数字验证码,随机生成一个1000-9999的数就可以代替; { Random rannumber = new Random(); return rannumber.Next(1000, 10000); } }