zoukankan      html  css  js  c++  java
  • C# 制作图片验证码

    1、引命名空间:using System.Drawing;

    2、制作一个小图片、容器:

    //制作一个长100,高50的画布
    Bitmap img = new Bitmap(160,40);
    //开始在这个画布上绘制:
    Graphics gra = Graphics.FromImage(img);

    3、要画的内容:

            //定义颜色,添加到集合内;
            List<Color> clist = new List<Color>();
            clist.Add(Color.Red);
            clist.Add(Color.Yellow);
            clist.Add(Color.Blue);
            clist.Add(Color.Green);
            clist.Add(Color.Aqua);
            clist.Add(Color.Orange);
            clist.Add(Color.Pink);
            //随机数
            Random ran = new Random();
            //验证码正文
            string yzm = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
            string yzm2 = "";
            //定义一个颜色的值当背景色选择了这个颜色后,把这个颜色从集合内删掉,防止字体颜色和背景颜色重复;
            Color bgcolor = clist[ran.Next(0, clist.Count)];
            clist.Remove(bgcolor);
            //画背景色,参数:颜色,X轴位置,Y轴位置,宽度,高度;
            gra.FillRectangle(new SolidBrush(bgcolor), 0, 0, 160, 40);
            //循环生成一个6位数的验证码;
            for (var i = 0; i < 6; i++)
            {
                yzm2 += yzm[ran.Next(0, yzm.Length)];
            }
            Session["YanZhengMa"] = yzm2;
            //定义字体:样式“微软雅黑”,字体大小“23”;
            Font font = new Font("微软雅黑", 23);
            //定义画刷“SolidBrush”实线画刷,颜色从集合内选择随机颜色;
            Brush brush = new SolidBrush(clist[ran.Next(0,clist.Count)]);
            //画验证码,参数:6位数验证码,字体,画刷,X轴位置,Y轴位置;
            gra.DrawString(yzm2, font, brush, ran.Next(0, 40), ran.Next(0, 7));
            //循环生成干扰线
            for (var i = 0; i < 5; i++)
            {
                //定义一个画笔,参数:画笔的颜色,画笔的粗细度
                Pen pen = new Pen(new SolidBrush(clist[ran.Next(0, clist.Count)]), ran.Next(2, 3));
                //干扰线的第一个点,参数:X轴位置,Y轴位置;
                Point point = new Point(ran.Next(0, 160), ran.Next(0, 40));
                //干扰线的第二个点,参数:X轴位置,Y轴位置;
                Point point2 = new Point(ran.Next(0, 160), ran.Next(0, 40));
                //画干扰线,参数:画笔,第一个点,第二个点;
                gra.DrawLine(pen, point, point2);
            }
            //保存图片,参数:保存到流,保存成“Jpeg”格式;
            img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
        }

    4、需要用另一个页面才能打开此验证码图,设置完验证码图后,把ss的值赋给一个session或者是cookie,在另一个页面验证,textbox的值如果等于session或cookie就通过,不是就return;

    5、点击图片验证码更换

            var a = 1;
            $('.YZM_img').click(function () {
                $(this).attr('src', 'YZM.aspx?' + a);
                a++;
            });

    =====================

    成品直接拷,颜色需修改;

  • 相关阅读:
    vue 使用 <iframe> 嵌入网页 地址实现动态配置
    vue 视频播放 vue-video-player
    vue 实现自定义序号, 并且翻页序号累加。
    关于 vue 使用 Handsontable 表格数据导出
    node.js Stream流的使用
    手把手教如何搭建node+egg项目 引入Sequelize
    实现 通过数据库里一个字段值相等 则把 他合为一条数据
    最近在项目中碰到把对象数组转为键值对,
    js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip
    for循环
  • 原文地址:https://www.cnblogs.com/xinchenhui/p/8284625.html
Copyright © 2011-2022 走看看