生成验证码图片
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
namespace LSMWebSite
{
/// <summary>
/// ValidateGif 的摘要说明。
/// </summary>
public class ValidateGif : System.Web.UI.Page
{
#region 页面初始化方法
private void Page_Load(object sender, System.EventArgs e)
{
validateStr=createRandomStr();
createPic(validateStr);
}
#endregion
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
#region 生成图片
private void createPic(string str)
{
char[] chars=new char[4];
chars=str.ToCharArray();
Random randomFont=new Random();
Random randomSize=new Random();
int size;
int fontnum;
Font font=null;
Bitmap image=new Bitmap(100,30);
Graphics g=Graphics.FromImage(image);
string thefulname=Server.MapPath("/")+str+".gif";
g.Clear(Color.Gainsboro);
for(int i=0;i<4;i++)
{
size=randomSize.Next(12,22);
fontnum=randomFont.Next(5);
switch(fontnum)
{
case 1: font=new Font("Arial Black",size);
break;
case 2: font=new Font("BatangChe",size);
break;
case 3: font=new Font("Gulim",size);
break;
default:font=new Font("Courier New",size);
break;
}
g.DrawString(Convert.ToString(chars[i]),font,new SolidBrush(Color.Red),20+i*15,2);
}
g.DrawRectangle(new System.Drawing.Pen(Color.Black),0,0,99,29);
// g.DrawString(str,new Font("Courier New",10),new SolidBrush(Color.Red),20,5);
//image.Save(thefulname,System.Drawing.Imaging.ImageFormat.Jpeg);
MemoryStream stream=new MemoryStream();
image.Save(stream,System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType="image/GIF";
Response.BinaryWrite(stream.ToArray());
g.Dispose();
image.Dispose();
Response.End();
}
#endregion
#region 生成随机字符串
private string createRandomStr()
{
Random ranNum=new Random();
Random ranChar=new Random();
char[] chars=new char[4];
for(int i=0;i<4;i++)
{
if(ranNum.Next(0,9)%2==0)
{
chars[i]=Convert.ToChar(ranChar.Next(49,58));
}
else
{
chars[i]=Convert.ToChar(ranChar.Next(96,123));
}
}
return new string(chars);
}
#endregion
#region 利用Session存储随机字符串validateStr
private string validateStr
{
get
{
return Session["validateStr"].ToString();
}
set
{
Session["validateStr"]=value;
}
}
#endregion
}
}