zoukankan      html  css  js  c++  java
  • ASP.NET中常用功能代码总结(2)——生成验证图片

    ASP.NET中常用功能代码总结(2——生成验证图片

    整理:Terrylee

    生成随机的验证图片

    使用方法:

    1///调用函数将验证码生成图片
    2            this.CreateCheckCodeImage(GenerateCheckCode());

     1/// <summary>
     2        /// 产生五位的随机字符串
     3        /// </summary>
     4        /// <returns></returns>

     5        private string GenerateCheckCode()
     6        {  
     7            int number;
     8            char code;
     9            string checkCode = String.Empty;
    10
    11            System.Random random = new Random();
    12
    13            for (int i = 0; i < 5; i++)
    14            {
    15                number = random.Next();
    16
    17                if (number % 2 == 0)
    18                    code = (char)('0' + (char)(number % 10));
    19                else
    20                    code = (char)('A' + (char)(number % 26));
    21
    22                checkCode += code.ToString();
    23            }

    24
    25            ///用于客户端校验码比较
    26            Session["CheckCode"= checkCode;
    27
    28            return checkCode;
    29        }

    30        
    31        /// <summary>
    32        /// 将验证码生成图片显示
    33        /// </summary>
    34        /// <param name="checkCode"></param>

    35        private void CreateCheckCodeImage(string checkCode)
    36        {  
    37            if (checkCode == null || checkCode.Trim() == String.Empty)
    38                return;
    39
    40            System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
    41            Graphics g = Graphics.FromImage(image);
    42
    43            try
    44            {
    45                ///生成随机生成器 
    46                Random random = new Random();
    47
    48                ///清空图片背景色 
    49                g.Clear(Color.White);
    50
    51                ///画图片的背景噪音线 
    52                for (int i = 0; i < 25; i++)
    53                {
    54                    int x1 = random.Next(image.Width);
    55                    int x2 = random.Next(image.Width);
    56                    int y1 = random.Next(image.Height);
    57                    int y2 = random.Next(image.Height);
    58
    59                    g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
    60                }

    61
    62                Font font = new System.Drawing.Font("Arial"12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
    63                System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(00, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2ftrue);
    64                g.DrawString(checkCode, font, brush, 22);
    65
    66                ///画图片的前景噪音点 
    67                for (int i = 0; i < 100; i++)
    68                {
    69                    int x = random.Next(image.Width);
    70                    int y = random.Next(image.Height);
    71
    72                    image.SetPixel(x, y, Color.FromArgb(random.Next()));
    73                }

    74
    75                ///画图片的边框线 
    76                g.DrawRectangle(new Pen(Color.Silver), 00, image.Width - 1, image.Height - 1);
    77
    78                System.IO.MemoryStream ms = new System.IO.MemoryStream();
    79                image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
    80                Response.ClearContent();
    81                Response.ContentType = "image/Gif";
    82                Response.BinaryWrite(ms.ToArray());
    83            }

    84            finally
    85            {
    86                g.Dispose();
    87                image.Dispose();
    88            }

    89        }
    支持TerryLee的创业产品Worktile
    Worktile,新一代简单好用、体验极致的团队协同、项目管理工具,让你和你的团队随时随地一起工作。完全免费,现在就去了解一下吧。
    https://worktile.com
  • 相关阅读:
    各种推荐资料汇总。。。
    不错的blog,做计算广告学的,还有机器学习的
    大数据建模,eBay的一个牛人
    factor graph和sum product和TrueSkill相关的两个blog,相当不错
    词云制作工具。。。
    CSS:nthchild选择器用法练习
    CSS控制表格隔行变色:nthchild()选择器
    CSS3calc()函数练习(制作响应式布局)
    CSS3boxsizing属性练习(borderbox设置padding和border不会改变width和height的值)
    CSS3clippath练习
  • 原文地址:https://www.cnblogs.com/Terrylee/p/287949.html
Copyright © 2011-2022 走看看