【ASP.NET】生成随机验证码 ValidateCode 2

前面也做过生成随机验证码的,但是觉得之前做的太丑了,所以重新做了一下。

效果

 

源码

    /// <summary>
    /// 生成验证码
    /// </summary>
    public class ValidateCode
    {
        public ValidateCode()
        {
            random = new Random();
        }

        Random random;//生成随机数对象
        string VCode;//验证码字符串
        /// <summary>
        /// 创建验证码字符串
        /// </summary>
        /// <param name="codeLen">验证码长度</param>
        public string CreateVCode(int codeLen = 4)
        {
            //获取随机数字
            VCode = null;
            for (int i = 0; i < codeLen; i++)
            {
                VCode += random.Next(0, 10);
            }

            return VCode;
        }

        /// <summary>
        /// 返回验证码图像字节
        /// </summary>
        /// <returns></returns>
        public byte[] CreateVCodeImgByte()
        {
            //定义字体,颜色
            string[] fonts = {  "宋体", "黑体", "微软雅黑", "隶书", "仿宋" };
            Color[] colors = { Color.DarkRed, Color.Green, Color.Blue, Color.Purple };

            //创建图像对象
            Bitmap bmp = new Bitmap(48, 24);
            Graphics g = Graphics.FromImage(bmp);
            g.Clear(Color.White);

            //绘制数字到图像上
            for (int i = 0; i < VCode.Length; i++)
            {
                Font font = new Font(fonts[random.Next(0, fonts.Length)], 14, FontStyle.Bold);
                Brush brush = new SolidBrush(colors[random.Next(0, colors.Length)]);
                Point point = new Point(i * 11);//字体的间隙
                g.DrawString(VCode[i].ToString(), font, brush, point);
            }

            //生成直线
            for (int i = 0; i < 7; i++)
            {
                Point p1 = new Point(random.Next(0, bmp.Width), random.Next(0, bmp.Height));
                Point p2 = new Point(random.Next(0, bmp.Width), random.Next(0, bmp.Height));
                Color color = colors[random.Next(0, colors.Length)];
                g.DrawLine(new Pen(color), p1, p2);
            }

            //生成像素点
            for (int i = 0; i < 30; i++)
            {
                Point p = new Point(random.Next(0, bmp.Width), random.Next(0, bmp.Height));
                Color color = colors[random.Next(0, colors.Length)];
                bmp.SetPixel(p.X, p.Y, color);
            }

            return BitmapToByte(bmp);
        }

        /// <summary>
        /// Bitmap转byte[]
        /// </summary>
        private byte[] BitmapToByte(Bitmap bitmap)
        {
            MemoryStream ms = new MemoryStream();
            bitmap.Save(ms, ImageFormat.Bmp);
            byte[] imgByte = ms.GetBuffer();
            return imgByte;
        }
    }

 

使用

Common.ValidateCode validateCode = new Common.ValidateCode();

//生成验证码
string vCode = validateCode.CreateVCode();

//生成验证码图像Byte
byte[] imgByte = validateCode.CreateVCodeImgByte();

 

相关推荐
<div style="color:rgba(0,0,0,.75);"> <span style="color:#4d4d4d;"> </span> <div style="color:rgba(0,0,0,.75);"> <span style="color:#4d4d4d;"> </span> <div style="color:rgba(0,0,0,.75);"> <div style="color:rgba(0,0,0,.75);"> <span style="color:#4d4d4d;">当前课程中商城项目的实战源码是我发布在 GitHub 上的开源项目 newbee-mall (新蜂商城),目前已有 6300 多个 star,</span><span style="color:#4d4d4d;">本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 商城项目功能的讲解,让大家实际操作并实践上手一个大型的线上商城项目,并学习到一定的开发经验以及其中的开发技巧。<br /> 商城项目所涉及的功能结构图整理如下:<br /> </span> </div> <div style="color:rgba(0,0,0,.75);">   </div> <div style="color:rgba(0,0,0,.75);"> <p style="color:#4d4d4d;"> <img alt="modules" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3N0b3JlL25ld2JlZS1tYWxsLXMucG5n?x-oss-process=image/format,png" /> </p> </div> <p style="color:rgba(0,0,0,.75);"> <strong><span style="color:#e53333;">课程特色</span></strong> </p> <p style="color:rgba(0,0,0,.75);">   </p> <div style="color:rgba(0,0,0,.75);">   </div> <div style="color:rgba(0,0,0,.75);"> <ul> <li> 对新手开发者十分友好,无需复杂的操作步骤,仅需 2 秒就可以启动这个完整的商城项目 </li> <li> 最终的实战项目是一个企业级别的 Spring Boot 大型项目,对于各个阶段的 Java 开发者都是极佳的选择 </li> <li> 实践项目页面美观且实用,交互效果完美 </li> <li> 教程详细开发教程详细完整、文档资源齐全 </li> <li> 代码+讲解+演示网站全方位保证,向 Hello World 教程说拜拜 </li> <li> 技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,可以进一步提升你的市场竞争力 </li> </ul> </div> <p style="color:rgba(0,0,0,.75);">   </p> <p style="color:rgba(0,0,0,.75);"> <span style="color:#e53333;">课程预览</span> </p> <p style="color:rgba(0,0,0,.75);">   </p> <div style="color:rgba(0,0,0,.75);">   </div> <div style="color:rgba(0,0,0,.75);"> <p style="color:#4d4d4d;"> 以下为商城项目的页面和功能展示,分别为: </p> </div> <div style="color:rgba(0,0,0,.75);"> <ul> <li> 商城首页 1<br /> <img alt="" src="https://img-bss.csdnimg.cn/202103050347585499.gif" /> </li> <li> 商城首页 2<br /> <img alt="" src="https://img-bss.csdn.net/202005181054413605.png" /> </li> <li>   </li> <li> 购物车<br /> <img alt="cart" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3QvY2FydC5wbmc?x-oss-process=image/format,png" /> </li> <li> 订单结算<br /> <img alt="settle" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3Qvc2V0dGxlLnBuZw?x-oss-process=image/format,png" /> </li> <li> 订单列表<br /> <img alt="orders" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3Qvb3JkZXJzLnBuZw?x-oss-process=image/format,png" /> </li> <li> 支付页面<br /> <img alt="" src="https://img-bss.csdn.net/201909280301493716.jpg" /> </li> <li> 后台管理系统登录页<br /> <img alt="login" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3QvbWFuYWdlLWxvZ2luLnBuZw?x-oss-process=image/format,png" /> </li> <li> 商品管理<br /> <img alt="goods" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3QvbWFuYWdlLWdvb2RzLnBuZw?x-oss-process=image/format,png" /> </li> <li> 商品编辑<br /> <img alt="" src="https://img-bss.csdnimg.cn/202103050348242799.png" /> </li> </ul> </div> </div> </div> </div>
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页