[转载]c#的验证码代码(能直接用)

    技术2022-05-20  39

    using System;using System.Data;using System.Configuration;using System.Collections;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;using System.Drawing.Imaging;using System.Drawing.Drawing2D;using System.Drawing;

    public partial class : System.Web.UI.Page//CheckCode是网页名字,另外,你要弄一个图片控件,将它的地址设为这个网页的名字。{        // 验证码长度        private int codeLen = 4;        // 图片清晰度        private int fineness = 100;        // 图片宽度        private int imgWidth = 100;        // 图片高度        private int imgHeight = 24;        // 字体家族名称    private string fontFamily = "Arial Black";        // 字体大小        private int fontSize = 18;        // 字体样式        private int fontStyle = 0;        // 绘制起始坐标 X        private int posX = 0;        // 绘制起始坐标 Y        private int posY = 0;

            //------------------------------------------------------------        // code.aspx 页面加载函数        //------------------------------------------------------------        private void Page_Load(object sender, System.EventArgs e)        {            #region 读取 Request 传递参数            // 获取代码长度设置            if (Request["CodeLen"] != null)            {                try                {                    codeLen = Int32.Parse(Request["CodeLen"]);

                        // 规定验证码长度                    if (codeLen < 4 || codeLen > 16)                        throw new Exception("验证码长度必须在4到16之间");                }                catch (Exception Ex)                {                    throw Ex;                }            }

                // 获取图片清晰度设置            if (Request["Fineness"] != null)            {                try                {                    fineness = Int32.Parse(Request["Fineness"]);

                        // 验证清晰度                    if (fineness < 0 || fineness > 100)                        throw new Exception("图片清晰度必须在0到100之间");                }                catch (Exception Ex)                {                    throw Ex;                }            }

                // 获取图片宽度            if (Request["ImgWidth"] != null)            {                try                {                    imgWidth = Int32.Parse(Request["ImgWidth"]);

                        if (imgWidth < 16 || imgWidth > 480)                        throw new Exception("图片宽度必须在16到480之间");                }                catch (Exception Ex)                {                    throw Ex;                }            }

                // 获取图片高度            if (Request["ImgHeight"] != null)            {                try                {                    imgHeight = Int32.Parse(Request["ImgHeight"]);

                        if (imgHeight < 16 || imgHeight > 320)                        throw new Exception("图片高度必须在16到320之间");                }                catch (Exception Ex)                {                    throw Ex;                }            }

                // 获取验证码字体家族名称            if (Request["FontFamily"] != null)            {                fontFamily = Request["FontFamily"];            }

                // 获取验证码字体大小            if (Request["FontSize"] != null)            {                try                {                    fontSize = Int32.Parse(Request["FontSize"]);

                        if (fontSize < 8 || fontSize > 72)                        throw new Exception("字体大小必须在8到72之间");                }                catch (Exception Ex)                {                    throw Ex;                }            }

                // 获取字体样式            if (Request["FontStyle"] != null)            {                try                {                    fontStyle = Int32.Parse(Request["FontStyle"]);                }                catch (Exception Ex)                {                    throw Ex;                }            }

                // 验证码绘制起始位置 X            if (Request["PosX"] != null)            {                try                {                    posX = Int32.Parse(Request["PosX"]);                }                catch (Exception Ex)                {                    throw Ex;                }            }

                // 验证码绘制起始位置 Y            if (Request["PosY"] != null)            {                try                {                    posY = Int32.Parse(Request["PosY"]);                }                catch (Exception Ex)                {                    throw Ex;                }            }            #endregion

                string code = Createcode();

                // 生成BITMAP图像            Bitmap bitmap = new Bitmap(imgWidth, imgHeight);

                // 给图像设置干扰            DisturbBitmap(bitmap);

                // 绘制验证码图像            Drawcode(bitmap, code);

                // 保存验证码图像,等待输出            bitmap.Save(Response.OutputStream, ImageFormat.Gif);        }

            //------------------------------------------------------------        // 随机生成验证码,并保存到SESSION中        //------------------------------------------------------------        private string Createcode()        {            string code = "";

                // 随机数对象            Random random = new Random();

                for (int i = 0; i < codeLen; i++)            {                // 26: a - z                int n = random.Next(26);

                    // 将数字转换成大写字母                code += (char)(n + 65);            }

                // 保存验证码            Session["code"] = code;

                return code;        }

            //------------------------------------------------------------        // 为图片设置干扰点        //------------------------------------------------------------        private void DisturbBitmap(Bitmap bitmap)        {            // 通过随机数生成            Random random = new Random();

                for (int i = 0; i < bitmap.Width; i++)            {                for (int j = 0; j < bitmap.Height; j++)                {                    if (random.Next(100) <= this.fineness)                        bitmap.SetPixel(i, j, Color.White);                }            }                   }

            //------------------------------------------------------------        // 绘制验证码图片        //------------------------------------------------------------        private void Drawcode(Bitmap bitmap, string code)        {            // 获取绘制器对象            Graphics g = Graphics.FromImage(bitmap);

                // 设置绘制字体            Font font = new Font(fontFamily, fontSize, GetFontStyle());            Pen myPen = new Pen(Color.Black,2);

                //随机画两条线            Random r = new Random();            float x1 = r.Next(imgWidth);            float x2 = r.Next(imgWidth) ;            float y1 = r.Next(imgHeight);            float y2 = r.Next(imgHeight);            g.DrawLine(myPen, x1, y1, x2, y2);             x1 = r.Next(imgWidth );             x2 = r.Next(imgWidth);             y1 = r.Next(imgHeight);             y2 = r.Next(imgHeight);            g.DrawLine(myPen, x1, y1, x2, y2);            // 绘制验证码图像            g.DrawString(code, font, Brushes.Black, posX, posY);                   }

            //------------------------------------------------------------        // 换算验证码字体样式:1 粗体 2 斜体 3 粗斜体,默认为普通字体        //------------------------------------------------------------        private FontStyle GetFontStyle()        {            if (fontStyle == 1)                return FontStyle.Bold;            else if (fontStyle == 2)                return FontStyle.Italic;            else if (fontStyle == 3)                return FontStyle.Bold | FontStyle.Italic;            else                return FontStyle.Regular;


    最新回复(0)