zoukankan      html  css  js  c++  java
  • 生成随机验证图片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/

  • 相关阅读:
    Groovy新手教程
    cocos2d-x v3.2 FlappyBird 各个类对象详细代码分析(6)
    开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
    病毒木马查杀第002篇:熊猫烧香之手动查杀
    Activity具体解释(生命周期、以各种方式启动Activity、状态保存,全然退出等)
    白话经典算法系列之六 高速排序 高速搞定
    UVA580-Critical Mass
    FPGA 时序问题
    SVD神秘值分解
    Java中Integer类的方法
  • 原文地址:https://www.cnblogs.com/sutengcn/p/291525.html
Copyright © 2011-2022 走看看