You are on page 1of 4

Create your own captcha image generator in asp.net using c#.

net
The below example will generate a captcha code with numbers and alphabets (small
and capital letters). You can change the variable
combination value according to
your requirement.
Output of the below example:
Create two pages GenerateCaptcha.aspx and Registration.aspx
GenerateCaptcha.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GenerateCaptcha.aspx.cs"
Inherits="GenerateCaptcha" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or
g/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
GenerateCaptcha.aspx.cs
using
using
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Web.UI;
System.Web.UI.WebControls;
System.Drawing;
System.Drawing.Drawing2D;
System.Drawing.Imaging;

public partial class GenerateCaptcha : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
int height = 30;
int width = 100;
Bitmap bmp = new Bitmap(width, height);
RectangleF rectf = new RectangleF(10, 5, 0, 0);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);
g.SmoothingMode = SmoothingMode.AntiAlias;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.DrawString(Session["captcha"].ToString(), new Font("Thaoma", 12, FontS

tyle.Italic), Brushes.Green, rectf);


g.DrawRectangle(new Pen(Color.Red), 1, 1, width-2, height-2);
g.Flush();
Response.ContentType = "image/jpeg";
bmp.Save(Response.OutputStream, ImageFormat.Jpeg);
g.Dispose();
bmp.Dispose();
}
}
Registration.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Registration.aspx.cs" In
herits="Registration" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or
g/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="SM1" runat="server">
</asp:ScriptManager>
<table style="border: solid 1px black; padding: 20px; position: relative
; top: 50px;"
align="center">
<tr>
<td>
Email ID :
</td>
<td>
<asp:TextBox ID="txtEmailID" runat="server" Width="200px"></
asp:TextBox>
</td>
</tr>
<tr>
<td>
Password :
</td>
<td>
<asp:TextBox ID="txtPassword" runat="server" TextMode="Passw
ord" Width="200px"></asp:TextBox>
</td>
</tr>
<tr>
<td>
Confirm Password :
</td>
<td>
<asp:TextBox ID="txtConfirmPassword" runat="server" TextMode
="Password" Width="200px"></asp:TextBox>
</td>
</tr>
<tr>
<td>
Enter Below Code :

</td>
<td>
<asp:TextBox ID="txtCaptcha" runat="server" Width="200px"></
asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
<td valign="middle">
<asp:UpdatePanel ID="UP1" runat="server">
<ContentTemplate>
<table>
<tr>
<td style="height: 50px; width:100px;">
<asp:Image ID="imgCaptcha" runat="server
" />
</td>
<td valign="middle">
<asp:Button ID="btnRefresh" runat="serve
r" Text="Refresh" OnClick="btnRefresh_Click" />
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<asp:Button ID="btnRegiser" runat="server" Text="Register" O
nClick="btnRegister_Click" />
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
Registration.aspx.cs
using
using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Web.UI;
System.Web.UI.WebControls;
System.Text;

public partial class Registration : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
FillCapctha();
}
}

void FillCapctha()
{
try
{
Random random = new Random();
string combination = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghij
klmnopqrstuvwxyz";
StringBuilder captcha = new StringBuilder();
for (int i = 0; i < 6; i++)
captcha.Append(combination[random.Next(combination.Length)]);
Session["captcha"] = captcha.ToString();
imgCaptcha.ImageUrl = "GenerateCaptcha.aspx?" + DateTime.Now.Ticks.T
oString();
}
catch
{
throw;
}
}
protected void btnRefresh_Click(object sender, EventArgs e)
{
FillCapctha();
}
protected void btnRegister_Click(object sender, EventArgs e)
{
if (Session["captcha"].ToString() != txtCaptcha.Text)
Response.Write("Invalid Captcha Code");
else
Response.Write("Valid Captcha Code");
FillCapctha();
}
}