引用ThoughtWorks.QRCode.dll (源代码里有)
1、简单二维码生成及解码代码:
//生成二维码方法一
- 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);
- }
复制代码
源代码演示下载:点击下载 |