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,若有侵权,必定删除。

原文地址:https://www.cnblogs.com/hugeboke/p/9983408.html