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