• .NET 二维码生成(ThoughtWorks.QRCode)


    引用ThoughtWorks.QRCode.dll (源代码里有)

    1、简单二维码生成及解码代码:

    复制代码
            //生成二维码方法一
            private void CreateCode_Simple(string nr)
            {
                QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
                qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
                qrCodeEncoder.QRCodeScale = 4;
                qrCodeEncoder.QRCodeVersion = 8;
                qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
                //System.Drawing.Image image = qrCodeEncoder.Encode("4408810820 深圳-广州 小江");
                System.Drawing.Image image = qrCodeEncoder.Encode(nr);
                string filename = DateTime.Now.ToString("yyyymmddhhmmssfff").ToString() + ".jpg";
                string filepath = Server.MapPath(@"~\Upload") + "\\" + filename;
                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();
                //二维码解码
                var codeDecoder = CodeDecoder(filepath);
            }
    
            /// <summary>
            /// 二维码解码
            /// </summary>
            /// <param name="filePath">图片路径</param>
            /// <returns></returns>
            public string CodeDecoder(string filePath)
            {
                if (!System.IO.File.Exists(filePath))
                    return null;
                Bitmap myBitmap = new Bitmap(Image.FromFile(filePath));
                QRCodeDecoder decoder = new QRCodeDecoder();
                string decodedString = decoder.decode(new QRCodeBitmapImage(myBitmap));
                return decodedString;
            }
    复制代码

    2、源代码演示,相对复杂的生成方式:

    界面效果:

    前端代码:

    复制代码
    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Code</title>
        <script src="~/Scripts/jquery-1.10.2.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("/home/CreateCode_Choose", { strData: strData, level: level, qrEncoding: encoding, version: version, scale: scale }, function (data) {
                        $("img").attr("src", data);
                    });
                });
    
            });
    
        </script>
    </head>
    <body>
        <div>
            <p>要生成的文字(支持中文):<input id="strData" type="text" value="123456 测试" /></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 src="" alt="" />
            <input id="createCode" type="button" value="生成" />
        </div>
    </body>
    </html>
    复制代码

    后台:

    复制代码
            /// 生成二维码
            /// </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 CreateCode_Choose(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);
            }
  • 相关阅读:
    如何让elementui 侧边栏的高度站整个屏幕
    渐变色 + 屏幕缩小自动产生滚动条
    css写一条线 鼠标悬浮的时候从中间向两边延申
    vue路由之间带参数跳转params与query的区别
    Oracle_11g_x64的安装与完全卸载
    类型不匹配 java.lang.IllegalArgumentException : argument type mismatch
    java.io.NotSerializableException 没有序列化异常
    MyBatis 面试题
    Navicat连接远程主机(腾讯云服务器)的mysql失败,解决(为需要远程登录的用户赋予权限)
    如何把web项目部署到Linux云服务器(详细流程)
  • 原文地址:https://www.cnblogs.com/wybshyy/p/16042709.html
Copyright © 2020-2023  润新知