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.org/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 System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Drawing; using System.Drawing.Drawing2D; using 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, FontStyle.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" Inherits="Registration" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/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="Password" 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="server" 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" OnClick="btnRegister_Click" /> </td> </tr> </table> </div> </form> </body> </html>


Registration.aspx.cs

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using 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 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 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.ToString(); } 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(); } }