• 生成随机验证图片ASP.NET中常用代码之二


    生成随机验证图片(转载)
    使用方法:
    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        }


    转自http://Teerylee.cnblogs.com/

  • 相关阅读:
    @MapperScan 注解和 mybatis.mapper-locations 配置两者缺一不可
    com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver的区别
    定时任务框架Quartz-(一)Quartz入门与Demo搭建
    js分页的实现代码
    圣杯布局中对left盒子设置负内边距-100%的一点解释
    前端小知识--为什么你写的height:100%不起作用?
    CSS:实现垂直居中的常用方法
    [jdk源码阅读系列]Java中System.arraycopy()的用法
    [jdk源码阅读系列]overflow-conscious code
    省选?
  • 原文地址:https://www.cnblogs.com/sutengcn/p/291525.html
Copyright © 2020-2023  润新知