<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Morteza Sahragard : Captcha Generic Handler ASP.NET</title><link>http://weblogs.asp.net/morteza/archive/tags/Captcha+Generic+Handler+ASP.NET/default.aspx</link><description>Tags: Captcha Generic Handler ASP.NET</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Create Simple Captcha By Generic Handler</title><link>http://weblogs.asp.net/morteza/archive/2008/07/07/create-simple-captcha-by-generic-handler.aspx</link><pubDate>Mon, 07 Jul 2008 23:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6367013</guid><dc:creator>mlife</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/morteza/rsscomments.aspx?PostID=6367013</wfw:commentRss><comments>http://weblogs.asp.net/morteza/archive/2008/07/07/create-simple-captcha-by-generic-handler.aspx#comments</comments><description>&lt;p&gt;In this post i will create simple captcha image using generic handler.&lt;/p&gt;
&lt;p&gt;Create new GenericHandler and write this code snippet&lt;/p&gt;
&lt;div style="border: 1px dashed rgb(255, 153, 51); padding: 5px;"&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; ProcessRequest(&lt;/font&gt;&lt;font color="#008080" size="2"&gt;HttpContext&lt;/font&gt;&lt;font size="2"&gt; context)&lt;br&gt;{&lt;br&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create radom number for captcha&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;Random&lt;/font&gt;&lt;font size="2"&gt; rand = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;Random&lt;/font&gt;&lt;font size="2"&gt;();&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;int&lt;/font&gt;&lt;font size="2"&gt; number = rand.Next(1000, 9999);&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;string&lt;/font&gt;&lt;font size="2"&gt; fontSize = &lt;/font&gt;&lt;font color="#800000" size="2"&gt;"30"&lt;/font&gt;&lt;font size="2"&gt;;&lt;br&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;Font&lt;/font&gt;&lt;font size="2"&gt; font = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;Font&lt;/font&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;"times new roman"&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;float&lt;/font&gt;&lt;font size="2"&gt;.Parse(fontSize), &lt;/font&gt;&lt;font color="#008080" size="2"&gt;FontStyle&lt;/font&gt;&lt;font size="2"&gt;.Italic);&lt;br&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;Bitmap&lt;/font&gt;&lt;font size="2"&gt; bitmap = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;Bitmap&lt;/font&gt;&lt;font size="2"&gt;(100,45);&lt;br&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;Graphics&lt;/font&gt;&lt;font size="2"&gt; graphic = &lt;/font&gt;&lt;font color="#008080" size="2"&gt;Graphics&lt;/font&gt;&lt;font size="2"&gt;.FromImage(bitmap);&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create hatch brush&lt;br&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;HatchBrush&lt;/font&gt;&lt;font size="2"&gt; hatchBrush = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;HatchBrush&lt;/font&gt;&lt;font size="2"&gt;(&lt;br&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&amp;nbsp;HatchStyle&lt;/font&gt;&lt;font size="2"&gt;.Sphere,&lt;br&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;Color&lt;/font&gt;&lt;font size="2"&gt;.DimGray,&lt;br&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;Color&lt;/font&gt;&lt;font size="2"&gt;.LightGray);&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Fill background with DarkGray color&lt;br&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;graphic.Clear(&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Color&lt;/font&gt;&lt;font size="2"&gt;.DarkGray);&lt;br&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Drawing random number&lt;br&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;graphic.DrawString(number.ToString(), font, hatchBrush, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;PointF&lt;/font&gt;&lt;font size="2"&gt;(0, 0));&lt;br&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;hatchBrush.Dispose();&lt;br&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;graphic.Dispose();&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Save image to output stream&lt;br&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;bitmap.Save(context.Response.OutputStream, &lt;/font&gt;&lt;font color="#008080" size="2"&gt;ImageFormat&lt;/font&gt;&lt;font size="2"&gt;.Gif);&lt;br&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;bitmap.Dispose();&lt;br&gt;}&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt; IsReusable&lt;br&gt;{&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;get&lt;br&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;{&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&amp;nbsp;&amp;nbsp; return&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;true&lt;/font&gt;&lt;font size="2"&gt;;&lt;br&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;}&lt;br&gt;}&lt;br&gt;&lt;/font&gt;&lt;/div&gt;
&lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Code&amp;nbsp;comments are clear.&lt;/p&gt;
&lt;p&gt;for using this snippet in aspx page, you need one line code.&lt;/p&gt;
&lt;div style="border: 1px dashed rgb(255, 153, 51); padding: 5px;"&gt;&lt;font color="#800000" size="2"&gt;&amp;lt;img&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;src&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;="CaptchaHandler.ashx"&lt;span class="style1"&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;span class="style1"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p mce_keep="true"&gt;Result is like this :&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src="http://weblogs.asp.net/blogs/morteza/captcha.png" title="captcha image" alt="captcha image" mce_src="http://weblogs.asp.net/blogs/morteza/captcha.png" border="0" height="72" hspace="0" width="127"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/morteza/SimpleCaptcha.zip" mce_href="http://weblogs.asp.net/blogs/morteza/SimpleCaptcha.zip"&gt;Download Demo File&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6367013" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/morteza/archive/tags/Captcha+Generic+Handler+ASP.NET/default.aspx">Captcha Generic Handler ASP.NET</category></item></channel></rss>