• Asp.Net 之 二维码生成


      首先,引用 ThoughtWorks.QRCode.dll 。

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

         //生成二维码方法一
            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;
            }

      相对复杂的生成方式:

      界面效果:

      

      前端代码:

    @{
        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);
            }
  • 相关阅读:
    基于 HTML5 WebGL 的 3D 仓储管理系统
    基于 HTML5 WebGL 的 3D “弹力”布局
    基于HTML5 Canvas 实现地铁站监控
    基于HTML5的WebGL经典3D虚拟机房漫游动画
    根据矩阵变化实现基于 HTML5 的 WebGL 3D 自动布局
    玩转 HTML5 下 WebGL 的 3D 模型交并补
    基于HTML5 Canvas WebGL制作分离摩托车
    基于HTML5 Canvas的3D动态Chart图表
    基于HTML5 Canvas的工控SCADA模拟飞机飞行
    [iOS]过渡动画之高级模仿 airbnb
  • 原文地址:https://www.cnblogs.com/xinaixia/p/5707048.html
Copyright © 2020-2023  润新知