zoukankan      html  css  js  c++  java
  • Asp.Net 之 二维码生成

     

    首先,引用 ThoughtWorks.QRCode.dll 。

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

     1  //生成二维码方法一
     2         private void CreateCode_Simple(string nr)
     3         {
     4             QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
     5             qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
     6             qrCodeEncoder.QRCodeScale = 4;
     7             qrCodeEncoder.QRCodeVersion = 8;
     8             qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
     9             //System.Drawing.Image image = qrCodeEncoder.Encode("4408810820 深圳-广州 小江");
    10             System.Drawing.Image image = qrCodeEncoder.Encode(nr);
    11             string filename = DateTime.Now.ToString("yyyymmddhhmmssfff").ToString() + ".jpg";
    12             string filepath = Server.MapPath(@"~Upload") + "\" + filename;
    13             System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
    14             image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
    15 
    16             fs.Close();
    17             image.Dispose();
    18             //二维码解码
    19             var codeDecoder = CodeDecoder(filepath);
    20         }
    21 
    22         /// <summary>
    23         /// 二维码解码
    24         /// </summary>
    25         /// <param name="filePath">图片路径</param>
    26         /// <returns></returns>
    27         public string CodeDecoder(string filePath)
    28         {
    29             if (!System.IO.File.Exists(filePath))
    30                 return null;
    31             Bitmap myBitmap = new Bitmap(Image.FromFile(filePath));
    32             QRCodeDecoder decoder = new QRCodeDecoder();
    33             string decodedString = decoder.decode(new QRCodeBitmapImage(myBitmap));
    34             return decodedString;
    35         }  相对复杂的生成方式:

      界面效果:

      

      前端代码:

     1 @{
     2     Layout = null;
     3 }
     4 
     5 <!DOCTYPE html>
     6 
     7 <html>
     8 <head>
     9     <meta name="viewport" content="width=device-width" />
    10     <title>Code</title>
    11     <script src="~/Scripts/jquery-1.10.2.js"></script>
    12     <script type="text/javascript">
    13         $(function () {
    14             $("#createCode").click(function () {
    15                 var strData = $("#strData").val();
    16                 var level = $("#level").val();
    17                 var encoding = $("#encoding").val();
    18                 var version = $("#version").val();
    19                 var scale = $("#scale").val();
    20 
    21                 $.post("/home/CreateCode_Choose", { strData: strData, level: level, qrEncoding: encoding, version: version, scale: scale }, 
    22             function (data) {
    23                       $("img").attr("src", data);
    24                   });
    25             });
    26 
    27         });
    28 
    29     </script>
    30 </head>
    31 <body>
    32     <div>
    33         <p>要生成的文字(支持中文):<input id="strData" type="text" value="123456 测试" /></p>
    34         <p>
    35             Encoding:<select id="encoding">
    36                 <option value="Byte">Byte</option>
    37                 <option value="AlphaNumeric">AlphaNumeric</option>
    38                 <option value="Numeric">Numeric</option>
    39             </select>
    40 
    41         </p>
    42         <p>
    43             Correction Level:<select id="level">
    44                 <option value="M">M</option>
    45                 <option value="L">L</option>
    46                 <option value="Q">Q</option>
    47                 <option value="H">H</option>
    48             </select>
    49         </p>
    50         <p>Version:<input id="version" type="text" value="8" /></p>
    51         <p>scale:<input id="scale" type="text" value="4" /></p>
    52         <img src="" alt="" />
    53         <input id="createCode" type="button" value="生成" />
    54     </div>
    55 </body>
    56 </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);
            }

    本文转载于:https://www.cnblogs.com/xinaixia/p/5707048.html,若有侵权,必定删除。

  • 相关阅读:
    Hibernate中日期(Date)类型 与oracle中日期的映射处理
    mssql注入经常使用的命令
    EL表达式遍历Map集合
    TomCat项目空间映射 配置
    JSP探针虚拟主机JSP环境检测工具
    什么是RSS
    大U盘容量的烦恼:copy 4G 以上单个文件时总是显示U盘已满
    Java初体验之bool
    何为Cookie
    转测试网站各项性能的31 个免费在线工具
  • 原文地址:https://www.cnblogs.com/hugeboke/p/9983408.html
Copyright © 2011-2022 走看看