.NET下生产图片验证码

后台文件:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;

namespace MyCompany.Web
{
    
/// <summary>
    
/// 验证码图片生成
    
/// </summary>
    public class ValidateNum : System.Web.UI.Page
    {
        
private void Page_Load(object sender, System.EventArgs e)
        {
            
//生成随机生成器
            Random random=new Random();

            
string validateNum = "";
            
string s = "0123456789";

            
for (int i = 0; i < 4; i++)
            {
                validateNum 
+= s[random.Next(s.Length)];
            }

            HttpContext.Current.Session[
"validateNum"= validateNum;
            
// 在此处放置用户代码以初始化页面
            Bitmap image = new Bitmap((int)Math.Ceiling(validateNum.Length * 12.5), 22);
            Graphics g 
= Graphics.FromImage(image);
            
try
            {
                
//清空图片背景色
                g.Clear(Color.White);

                Font font 
= new Font("Arial"12, (FontStyle.Bold|FontStyle.Italic));
                LinearGradientBrush brush 
= new LinearGradientBrush(new Rectangle(00, image.Width, image.Height), Color.OrangeRed, Color.OrangeRed, 1.2ftrue);
                g.DrawString(validateNum, font, brush, random.Next(
1+ 1, random.Next(1+ 1);
                
//画图片的边框线
                g.DrawRectangle(new Pen(Color.Silver), 00, image.Width - 1, image.Height - 1);
                
//保存图片数据
                MemoryStream stream = new MemoryStream();
                image.Save(stream, ImageFormat.Jpeg);
                
//输出图片
                Response.Clear();
                Response.ContentType
="image/jpeg";
                Response.BinaryWrite(stream.ToArray());
            }
            
finally
            {
                g.Dispose();
                image.Dispose();
            }
        }

        
#region Web 窗体设计器生成的代码
        
override protected void OnInit(EventArgs e)
        {
            
//
            
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            
//
            InitializeComponent();
            
base.OnInit(e);
        }
        
        
/// <summary>
        
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
        
/// 此方法的内容。
        
/// </summary>
        private void InitializeComponent()
        {    
            
this.Load += new System.EventHandler(this.Page_Load);
        }
        
#endregion
    }
}

效果如图:
posted @ 2006-05-09 14:57  巴西人  阅读(679)  评论(1编辑  收藏  举报