C# Tutorials and offshore development in India
    Tutorials   Resources   Forum   Interview   Jobs   Projects   Offshore Development    
Mentor | Code Converter | Articles | Code Factory | Computer Jokes | Members | Peer Appraisal | IT Companies | Bookmarks | Revenue Sharing | Talk to Us |



My Profile

Gifts

Active Members
TodayLast 7 Days more...







captcha(UPDATED)


Posted Date: 09 May 2008    Resource Type: Code Snippets    Category: C# Syntax

Posted By: mahua dutta       Member Level: Silver
Rating:     Points: 10



(1)//..........CaptchaImage.cs
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing.Text;

namespace App_Code {
///
/// Summary description for CaptchaImage.
///

public class CaptchaImage {
// Public properties (all read-only).
public string Text {
get { return this.text; }
}

public Bitmap Image {
get { return this.image; }
}

public int Width {
get { return this.width; }
}

public int Height {
get { return this.height; }
}

// Internal properties.
private string text;
private int width;
private int height;
private string familyName;
private Bitmap image;

// For generating random numbers.
private Random random = new Random();

// ====================================================================
// Initializes a new instance of the CaptchaImage class using the
// specified text, width and height.
// ====================================================================
public CaptchaImage(string s, int width, int height) {
this.text = s;
this.SetDimensions(width, height);
this.GenerateImage();
}

// ====================================================================
// Initializes a new instance of the CaptchaImage class using the
// specified text, width, height and font family.
// ====================================================================
public CaptchaImage(string s, int width, int height, string familyName) {
this.text = s;
this.SetDimensions(width, height);
this.SetFamilyName(familyName);
this.GenerateImage();
}

// ====================================================================
// This member overrides Object.Finalize.
// ====================================================================
~CaptchaImage() {
Dispose(false);
}

// ====================================================================
// Releases all resources used by this object.
// ====================================================================
public void Dispose() {
GC.SuppressFinalize(this);
this.Dispose(true);
}

// ====================================================================
// Custom Dispose method to clean up unmanaged resources.
// ====================================================================
protected virtual void Dispose(bool disposing) {
if (disposing)
// Dispose of the bitmap.
this.image.Dispose();
}

// ====================================================================
// Sets the image width and height.
// ====================================================================
private void SetDimensions(int width, int height) {
// Check the width and height.
if (width <= 0)
throw new ArgumentOutOfRangeException("width", width,
"Argument out of range, must be greater than zero.");
if (height <= 0)
throw new ArgumentOutOfRangeException("height", height,
"Argument out of range, must be greater than zero.");
this.width = width;
this.height = height;
}

// ====================================================================
// Sets the font used for the image text.
// ====================================================================
private void SetFamilyName(string familyName) {
// If the named font is not installed, default to a system font.
try {
Font font = new Font(this.familyName, 12F);
this.familyName = familyName;
font.Dispose();
}
catch (Exception ex) {
this.familyName = System.Drawing.FontFamily.GenericSerif.Name;
}
}

// ====================================================================
// Creates the bitmap image.
// ====================================================================
private void GenerateImage() {
// Create a new 32-bit bitmap image.
Bitmap bitmap = new Bitmap(this.width, this.height, PixelFormat.Format32bppArgb);

// Create a graphics object for drawing.
Graphics g = Graphics.FromImage(bitmap);
g.SmoothingMode = SmoothingMode.AntiAlias;
Rectangle rect = new Rectangle(0, 0, this.width, this.height);

// Fill in the background.
HatchBrush hatchBrush = new HatchBrush(HatchStyle.ZigZag, Color.LightGray, Color.White);
g.FillRectangle(hatchBrush, rect);

// Set up the text font.
SizeF size;
float fontSize = rect.Height + 1;
Font font;
// Adjust the font size until the text fits within the image.
do {
fontSize--;
font = new Font(this.familyName, fontSize, FontStyle.Bold);
size = g.MeasureString(this.text, font);
} while (size.Width > rect.Width);

// Set up the text format.
StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;

// Create a path using the text and warp it randomly.
GraphicsPath path = new GraphicsPath();
path.AddString(this.text, font.FontFamily, (int) font.Style, font.Size, rect, format);
float v = 4F;
PointF[] points =
{
new PointF(this.random.Next(rect.Width)/v, this.random.Next(rect.Height)/v),
new PointF(rect.Width - this.random.Next(rect.Width)/v, this.random.Next(rect.Height)/v),
new PointF(this.random.Next(rect.Width)/v, rect.Height - this.random.Next(rect.Height)/v),
new PointF(rect.Width - this.random.Next(rect.Width)/v,
rect.Height - this.random.Next(rect.Height)/v)
};
Matrix matrix = new Matrix();
matrix.Translate(0F, 0F);
path.Warp(points, rect, matrix, WarpMode.Perspective, 0F);

// Draw the text.
hatchBrush = new HatchBrush(HatchStyle.LargeConfetti, Color.LightGray, Color.DarkGray);
g.FillPath(hatchBrush, path);

// Add some random noise.
int m = Math.Max(rect.Width, rect.Height);
for (int i = 0; i < (int) (rect.Width*rect.Height/30F); i++) {
int x = this.random.Next(rect.Width);
int y = this.random.Next(rect.Height);
int w = this.random.Next(m/50);
int h = this.random.Next(m/50);
g.FillEllipse(hatchBrush, x, y, w, h);
}

// Clean up.
font.Dispose();
hatchBrush.Dispose();
g.Dispose();

// Set the image.
this.image = bitmap;
}
}
}
(2)//..........Deafault.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
// For generating random numbers.
private Random random = new Random();

protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
// Create a random code and store it in the Session object.
this.Session["CaptchaImageText"] = GenerateRandomCode();
}
}

//
// Returns a string of six random digits.
//
private string GenerateRandomCode()
{
string s = "";
for (int i = 0; i < 6; i++)
s = String.Concat(s, this.random.Next(10).ToString());
return s;
}
protected void SignupButton_Click(object sender, EventArgs e)
{
if (!Page.IsValid) return;
if ((CaptchaTextBox.Text == this.Session["CaptchaImageText"].ToString()) &&
Page.IsValid)
{
// Display an informational message.
//MessageLabel.CssClass = "info";
Label1.Text = "Correct!";

//gpstatusbox here...

//SaveRecord();
}
else
{
// Display an error message.
//MessageLabel.CssClass = "error";
Label1.Text = "ERROR: Incorrect, try again.";

////gpstatusbox here...

// Clear the input and create a new random code.
CaptchaTextBox.Text = "";
this.Session["CaptchaImageText"] = GenerateRandomCode();
}
}
}
(3)//...........Deafault(sourcs/web form)
//<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
//Inherits="_Default" %>

////Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

//
//
// Untitled Page
//
//
//
//

// Sample Captcha in C# ASP.NET
//

//

//
//

//
////OnClick="SignupButton_Click" />

//

//
//
//

(4)//..............JpegImage(asp.netserverpage..source/web form)
//<%@ Page language="C#" CodeFile="JpegImage.aspx.cs" AutoEventWireup="true"
//Inherits="JpegImage" %>
//
//
//
// JpegImage
//
//
//
// //content="http://schemas.microsoft.com/intellisense/ie5">
//
//
//
//
//


(5)//.......JpegImage.aspx.cs
using System.Drawing.Imaging;
using App_Code;

public partial class JpegImage : System.Web.UI.Page {
protected void Page_Load(object sender, System.EventArgs e) {
// Create a CAPTCHA image using the text stored in the Session object.
CaptchaImage ci = new CaptchaImage(this.Session["CaptchaImageText"].ToString(), 200, 50, "Century Schoolbook");

// Change the response headers to output a JPEG image.
this.Response.Clear();
this.Response.ContentType = "image/jpeg";

// Write the image to the response stream in JPEG format.
ci.Image.Save(this.Response.OutputStream, ImageFormat.Jpeg);

// Dispose of the CAPTCHA image object.
ci.Dispose();
}
}




Responses


No responses found. Be the first to respond and make money from revenue sharing program.

Feedbacks      
Popular Tags   What are tags ?   Search Tags  
(No tags found.)

Post Feedback


This is a strictly moderated forum. Only approved messages will appear in the site. Please use 'Spell Check' in Google toolbar before you submit.
You must Sign In to post a response.
Next Resource: Data bind a Control to an Enum
Previous Resource: How to Eject CD tray using Win32 API
Return to Discussion Resource Index
Post New Resource
Category: C# Syntax


Post resources and earn money!
 
Related Resources



dotNet Slackers   BizTalk Adaptors    Web Design

doors in nj

Contact Us    Privacy Policy    Terms Of Use