Asp.Net MVC实现文字,链接生成验证码

前景概要:闲来无事想写点啥(主要为了就业…)
制作简历时突发奇想,能不能把项目链接做成二维码形式,扫二维码就可以直接进入我的项目,说干就干,直接上代码

1.文字生成二维码
第一步:管理NuGet包,添加ThoughtWorks.QRCode(这个包主要负责二维码的生成)一定要添加这个包!!!!
2.前台代码`

 <fieldset>
        <legend>文字转换为二维码</legend>
        <div>
            <p>要生成的文字(支持中文)<input id="strData" type="text" value="dingdaxia" /></p>
            <p>
                Encoding:<select id="encoding">
                    <option value="Byte">Byte</option>
                    <option value="AlphaNumeric">AlphaNumeric</option>
                    <option value="Numeric">Numeric</option>
                </select>

            </p>
            <p>
                Correction Level:<select id="level">
                    <option value="M">M</option>
                    <option value="L">L</option>
                    <option value="Q">Q</option>
                    <option value="H">H</option>
                </select>
            </p>
            <p>Version:<input id="version" type="text" value="8" /></p>
            <p>scale:<input id="scale" type="text" value="4" /></p>
            <img id="one" src="" alt="" />
            <input id="createCode" type="button" value="生成" />
        </div>
    </fieldset>

js代码如下

<script src="~/Scripts/jquery-3.4.1.js"></script>
<script type="text/javascript">
        $(function () {
            $("#createCode").click(function () {
                var strData = $("#strData").val();
                var level = $("#level").val();
                var encoding = $("#encoding").val();
                var version = $("#version").val();
                var scale = $("#scale").val();

                $.post("@Url.Action("Erwei")", { strData: strData, level: level, qrEncoding: encoding, version: version, scale: scale }, function (data) {
                    $("#one").attr("src", data);
                });
            });

        });
    </script>

这部分有问题的基本上都是没有引入jquery包

3.后台代码

/// 生成二维码
        /// </summary>
        /// <param name="strData">要生成的文字或者数字,支持中文。如: "4408810820 深圳-广州" 或者:4444444444</param>
        /// <param name="qrEncoding">三种尺寸:BYTE ,ALPHA_NUMERIC,NUMERIC</param>
        /// <param name="level">大小:L M Q H</param>
        /// <param name="version">版本:如 8</param>
        /// <param name="scale">比例:如 4</param>
        /// <returns></returns>
        public ActionResult Erwei(string strData, string qrEncoding, string level, int version, int scale)
        {
            QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
            string encoding = qrEncoding;
            switch (encoding)
            {
                case "Byte":
                    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
                    break;
                case "AlphaNumeric":
                    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;
                    break;
                case "Numeric":
                    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC;
                    break;
                default:
                    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
                    break;
            }

            qrCodeEncoder.QRCodeScale = scale;
            qrCodeEncoder.QRCodeVersion = version;
            switch (level)
            {
                case "L":
                    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
                    break;
                case "M":
                    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
                    break;
                case "Q":
                    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;
                    break;
                default:
                    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;
                    break;
            }
            //文字生成图片
            Image image = qrCodeEncoder.Encode(strData);
            string filename = DateTime.Now.ToString("yyyymmddhhmmssfff").ToString() + ".jpg";
            string filepath = Server.MapPath(@"~\Upload") + "\\" + filename;
            //如果文件夹不存在,则创建
            //if (!Directory.Exists(filepath))
            //    Directory.CreateDirectory(filepath);
            System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
            image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
            fs.Close();
            image.Dispose();
            return Content(@"/Upload/" + filename);
        }

然后运行就发现可以了。。。也没啥好说的,记得添加Upload文件夹用来保存生成的二维码。但其实用JS来完成不要添加文件夹的,所以后面的链接跳转的例子用纯JS实现

链接跳转生成二维码
1.首先我们得准备一个JS包
一定得要这个包在这里插入图片描述
(如果不知道怎么搞到这个包,嗯。。。)
第一步:
第一步
第二步:
第二部
2.上代码

<fieldset>
        <legend>链接转换为二维码</legend>
        <input id="text" type="text" value="http://baidu.com" style="width:80%" /><button class="btn btn-group" onclick="makeCode()">生成</button><br />
        <div id="qrcode" style="width:100px; height:100px; margin-top:15px;"></div>       
</fieldset>

js代码如下

<script src="~/Scripts/qrcode.js"></script>
<script type="text/javascript">
    var qrcode = new QRCode(document.getElementById("qrcode"), {
        width: 100,
        height: 100
    });

    function makeCode() {
        var elText = document.getElementById("text");
        if (!elText.value) {
            alert("Input a text");
            elText.focus();
            return;
        }

        qrcode.makeCode(elText.value);
    }

    makeCode();

    $("#text").
        on("blur", function () {
            makeCode();
        }).
        on("keydown", function (e) {
            if (e.keyCode == 13) {
                makeCode();
            }
        });
</script>

然后就OK了。。。
效果图
在这里插入图片描述
同样可以访问我的服务器去玩玩这个小效果
http://120.25.249.30:8181/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值