• 简单二维码生成及解码代码:


    //生成二维码方法一

            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);
            }
    复制代码

    源代码演示下载:点击下载   http://www.cnblogs.com/jys509/p/4592539.html

  • 相关阅读:
    linux sed的使用
    linux 服务的操作
    Js apply方法详解,及其apply()方法的妙用
    call()方法和apply()方法
    javascript中的深拷贝和浅拷贝
    移动web适配利器-rem
    js 函数讲解
    try…catch 结构
    Git使用之(pathspec master did not match any file(s) known to git)
    微信小程序使用函数的三种方法
  • 原文地址:https://www.cnblogs.com/wyBlog117/p/4629194.html
Copyright © 2020-2023  润新知