如何写一个验证码

Posted on 2012-12-26 20:26  我是我的英雄  阅读(158)  评论(0编辑  收藏  举报

后台代码:

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.IO;
using System.Text;

namespace 验证码
{
    public partial class pic : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            System.Drawing.Image img = new Bitmap(150, 50);

            Graphics g = Graphics.FromImage(img);
            this.AddPoint(img, 100);
            string code = this.GeneralCode();
            Font font1=new Font("宋体",30,FontStyle.Italic);
            g.DrawString(code, font1, Brushes.Red, 0, 0);
            this.Response.Clear();
            MemoryStream ms = new MemoryStream();//创建一个缓存流
            img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);//将此图像以指定的格式保存到指定的流中
            this.Response.BinaryWrite(ms.ToArray());
            this.Response.Flush();//输出流
            this.Response.End();//关闭流

          
        }
        private void AddPoint(System.Drawing.Image img, int nums)//加噪点
        {
            Bitmap b = img as Bitmap;
            Random ran = new Random();
            for (int i = 0; i < nums; i++)
            {
                b.SetPixel(ran.Next(0, img.Width), ran.Next(0, img.Height), Color.White);
                   
            }
        }
        //随即生成数字
        private string GeneralCode()
        {
            Random ran = new Random(DateTime.Now.Millisecond);
            StringBuilder sb = new StringBuilder(6);
            for (int i = 0; i < 6; i++)
            {
                sb.Append(ran.Next(0, 9));

 
            }
            return sb.ToString();
        }
            
    }
}

Copyright © 2024 我是我的英雄
Powered by .NET 8.0 on Kubernetes