你的位置:首页 > ASP.net教程

[ASP.net教程].NET 二维码生成(ThoughtWorks.QRCode)


引用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);    }

源代码演示下载:点击下载