• 用户登陆的验证码的制作


     

    添加命名空间:

    using System.Drawing;

     验证码的生成:

    protected void FormCheck()

        {

            //////先得到验证码的内容并且存放到会话中

            Random rand = new Random();

            int len = rand.Next(4, 6);//随机获得验证码的长度4-6

            char[] str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();//将候选字符放入字符数组中

            System .Text .StringBuilder code=new System.Text.StringBuilder ();//用来保存显示的字符内容

            for (int i=0;i<len;i++)

            {

            code .Append (str [rand .Next (str.Length )]);

            }

            this.Session ["result"]=code.ToString () ;//将验证码存放到会话中

            ///////得到图像的大小

            Size imageSize = new Size();

            Font myFont = new Font("arial black", 20); //字体

            using (Bitmap bmp = new Bitmap(20, 15))

            { using (Graphics g=Graphics .FromImage (bmp ))

            {

             SizeF size=g.MeasureString (code.ToString () ,myFont,1000 );

                imageSize .Width =(int)size .Width +6;//得到高度和宽的

                imageSize .Height =(int)size .Height +5;

            }

            }

     

            /////创建验证码的图像

            using (Bitmap bmp=new Bitmap (imageSize .Width ,imageSize .Height ))

            {

            using (Graphics g=Graphics .FromImage (bmp ))

            {

                g.Clear(Color .White );

                g.DrawString  (code.ToString () ,myFont ,Brushes .Black ,new RectangleF (0,0,imageSize.Width ,imageSize .Height ));

            }

     

            int num = imageSize.Width * imageSize.Height * 30 / 100;

            for (int iCount = 0; iCount < num; iCount++)

            {

                // 在随机的位置使用随机的颜色设置图片的像素

                int x = rand.Next(imageSize.Width);

                int y = rand.Next(imageSize.Height);

                int r = rand.Next(255);

                int g = rand.Next(255);

                int b = rand.Next(255);

                Color c = Color.FromArgb(r, g, b);

                bmp.SetPixel(x, y, c);

            }//for                // 输出图片

            System.IO.MemoryStream ms = new System.IO.MemoryStream();

            bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png );

            this.Response.ContentType = "image/png";

            ms.WriteTo(this.Response.OutputStream);

            ms.Close();

            }

        }

     

    ///
            ///
    检查指定的文本是否匹配验证码
            ///
            ///
    要判断的文本
            ///
    是否匹配
            public static bool CheckCode( string text )
            {
            string txt = System.Web.HttpContext.Current.Session["checkcode"] as string ;
            return text == txt ;
            }

     

     

  • 相关阅读:
    Java 动态编译
    在ubuntu 18.04下,无线网卡无驱动,连不上wifi,显示wifi没有适配器的解决方法
    由浅入深了解Thrift(1,2,3)
    Docker系列05:docker镜像制作 &Docker file
    Docker系列04:docker数据存储
    Docker系列03:docker网络
    关于在github上 下载源码 clone 非 master 分支的代码
    CentOS 6 & 7 忘记root密码的修改方法
    Windows RDP远程连接CentOS 7
    Windows 上用IntelliJ Idea调试百度大数据分析框架Apache Doris FE
  • 原文地址:https://www.cnblogs.com/janes/p/1249646.html
Copyright © 2020-2023  润新知