zoukankan      html  css  js  c++  java
  • C#生成验证码实例

    常用生成验证码实例封装:

    /// <summary>
    /// 生成内存位图
    /// </summary>
    /// <param name="Code"></param>
    /// <returns></returns>
    public static Bitmap GetCode(out string Code)
    {
        int imgWidth = 80;
        int imgHeight = 40;
        //获取随机字符
        Code = DateTimeHelper.GetCode_Ran(4);
        //颜色列表,用于验证码、噪线、噪点 
        Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue };
        //字体列表,用于验证码 
        string[] font = { "Times New Roman", "MS Mincho", "Book Antiqua", "Gungsuh", "PMingLiU", "Impact" };
    
        Bitmap bmp = new Bitmap(imgWidth, imgHeight);
        Graphics g = Graphics.FromImage(bmp);
        g.Clear(Color.White);
        Random rnd = new Random();
        //画噪线 
        for (int i = 0; i < 10; i++)
        {
            int x1 = rnd.Next(imgWidth);
            int y1 = rnd.Next(imgHeight);
            int x2 = rnd.Next(imgWidth);
            int y2 = rnd.Next(imgHeight);
            Color clr = color[rnd.Next(color.Length)];
            g.DrawLine(new Pen(clr), x1, y1, x2, y2);
        }
        //画验证码字符串 
        for (int i = 0; i < Code.Length; i++)
        {
            string fnt = font[rnd.Next(font.Length)];
            Font ft = new Font(fnt, 18);
            Color clr = color[rnd.Next(color.Length)];
            g.DrawString(Code[i].ToString(), ft, new SolidBrush(clr), (float)i * 19, (float)8);
        }
        //画噪点 
        for (int i = 0; i < 100; i++)
        {
            int x = rnd.Next(bmp.Width);
            int y = rnd.Next(bmp.Height);
            Color clr = color[rnd.Next(color.Length)];
            bmp.SetPixel(x, y, clr);
        }
        //显式释放资源 
        // bmp.Dispose();
        g.Dispose();
        return bmp;
    }
    /// <summary>
    /// 生成位图,输出到响应流
    /// </summary>
    /// <param name="Response"></param>
    /// <param name="Code"></param>
    public static void GetCode(HttpResponseBase Response, out string Code)
    {
        Code = string.Empty;
        Bitmap bit = GetCode(out Code);
    
        ////清除该页输出缓存,设置该页无缓存 
        //Response.Buffer = true;
        //Response.ExpiresAbsolute = DateTime.Now.AddMilliseconds(0);
        //Response.Expires = 0;
        //Response.CacheControl = "no-cache";
        //Response.AppendHeader("Pragma", "No-Cache");
    
        Response.ClearContent();
        bit.Save(Response.OutputStream, ImageFormat.Png);
        Response.ContentType = "image/png";
    
        //释放资源
        bit.Dispose();
    }

  • 相关阅读:
    RabbitMQ系列(四)RabbitMQ事务和Confirm发送方消息确认——深入解读
    RabbitMQ系列(三)RabbitMQ交换器Exchange介绍与实践
    RabbitMQ系列(二)深入了解RabbitMQ工作原理及简单使用
    MyEclipse2017破解设置与maven项目搭建
    带你玩转七牛云存储——高级篇
    RabbitMQ系列(一)RabbitMQ在Ubuntu上的环境搭建
    ubuntu搭建nodejs生产环境——快速部署手册
    基于python的图片修复程序-可用于水印去除
    超简单的视频对象提取程序
    Ubuntu apt-get和pip国内源更换
  • 原文地址:https://www.cnblogs.com/tianma3798/p/5905742.html
Copyright © 2011-2022 走看看