建立ValidateImg.aspx文件,里面代码如下:
<%
@ Page Language
=
"
c#
"
%>

<%
@ Import Namespace
=
"
System.Web
"
%>
<%
@ Import Namespace
=
"
System.Drawing
"
%>
<%
@ Import Namespace
=
"
System.Drawing.Imaging
"
%>

<
script runat
=
"
server
"
language
=
"
C#
"
>
void
Page_Load(Object sender, EventArgs e)

{
int charsNo = 4;
int fontSize = 12;
int bgWidth = 60;
int bgHeight = 20;
float x = (bgWidth - (charsNo * (fontSize + 0.5F))) / 2; // TODO: optimize
float y = (bgHeight - (fontSize * 1.7F)) / 2; // TODO: optimize

// Generate the text
//
//string genText = Globals.CreateTemporaryPassword(charsNo).ToUpper();
string genText = CreateTemporaryPassword(charsNo).ToUpper();

// Add the generate text to a session variable
//
Session.Add("ValidateNumber", genText);

// Create the memory map
//
Bitmap raster;

// Select an memory image from file of 290x80 px
// in the current dir, NoSpamBgImgs folder named bg_X.jpg
//
Graphics graphicObj;
string bgFilePath = Server.MapPath(@".\AntiSpamBgImgs\bg_" + new Random().Next(1) + ".jpg");
System.Drawing.Image imgObj = System.Drawing.Image.FromFile(bgFilePath);

// Creating the raster image & graphic objects
//
raster = new Bitmap(imgObj, bgWidth, bgHeight);
graphicObj = Graphics.FromImage(raster);

// Creating an array for most readable yet cryptic fonts for OCR's
// This is entirely up to developer's discretion
// CAPTCHA recomandation
//
String[] crypticFonts = new String[13];
crypticFonts[0] = "Arial";
crypticFonts[1] = "Verdana";
crypticFonts[2] = "Comic Sans MS";
crypticFonts[3] = "Impact";
crypticFonts[4] = "Haettenschweiler";
crypticFonts[5] = "Lucida Sans Unicode";
crypticFonts[6] = "Garamond";
crypticFonts[7] = "Courier New";
crypticFonts[8] = "Book Antiqua";
crypticFonts[9] = "Arial Narrow";
crypticFonts[10] = "Fixedsys";
crypticFonts[11] = "宋体";
crypticFonts[12] = "仿体";

// Instantiate object of brush with black color
//
Random r = new Random();
SolidBrush brushes = new SolidBrush(Color.FromArgb(r.Next(150), r.Next(150), r.Next(150)));

// Loop to write the characters on image with different fonts
// CAPTCHA method
//
for (int a = 0; a < genText.Length; a++)

{
Font fontObj = new Font(crypticFonts[r.Next(crypticFonts.Length)], fontSize);

graphicObj.DrawString(genText.Substring(a, 1), fontObj, brushes, x + (a * fontSize), y);
}

// Flush again
//
graphicObj.Flush();

// Setting the response header content MIME type
//
Response.ContentType = "image/gif";

// Saving the file to output stream to be displayed in browser
//
raster.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);

// Flushing to the Response
//
Response.Flush();
}

public
static
String CreateTemporaryPassword(
int
length)

{

string str = "";
Random r = new Random();
for (int i = 0; i < length; i++)

{
str += r.Next(0, 9).ToString();
}

return str;
}

</
script
>


















































































































使用方法:
<img src="/ValidateImg.aspx" align="absmiddle" id="code" width="66" height="30" alt="验证码" /><a href="javascript:document.getElementById('code').src='/ValidateImg.aspx?'+Math.random();void(0);">看不清楚,换一个验证码</a>
后台:Session["ValidateNumber"] == input