詳しくはASP.NETはQRコードインスタンスを生成する(ThoughtWorks.QRCodeとQrCode.Netの2つの方法を採用する)

2403 ワード

最近、プロジェクトでQRコードを生成する問題が発生し、ネット上で最も多く使われているのはThoughtWorksであることが分かった.QRCodeとQrCode.Netの2つの方式.公式サイトを訪問して例を見て2つのDemoを書いたが、使用中に2つとも使いやすいことが分かった.QRCodeの機能はもっと多いですが、dllファイルは6兆、QrCodeです.Netは400 K以上しかないので、皆さんは自分のニーズに合わせて選びましょう.参考までにコードを添付します.
ThoughtWorks.QRCode:
private void CreateQrcode(string nr)

    {

      Bitmap bt;

      string enCodeString = nr;

      QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();

      bt = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);

      string filename = DateTime.Now.ToString("yyyymmddhhmmss");

      string path = Server.MapPath("~/image/") + filename + ".jpg";

      Response.Write(path);

      bt.Save(path);

      this.Image1.ImageUrl = "~/image/" + filename + ".jpg";

    }


QrCode.Net:
protected void Button1_Click(object sender, EventArgs e)

    {

      using (var ms = new MemoryStream())

      {
        string stringtest = "  inghttp://www.baidu.com/mvc.test?&";

        GetQRCode(stringtest, ms);

        Response.ContentType = "image/Png";

        Response.OutputStream.Write(ms.GetBuffer(), 0, (int)ms.Length);

        Image img = Image.FromStream(ms);

        string filename = DateTime.Now.ToString("yyyymmddhhmmss");

        string path = Server.MapPath("~/image/") + filename + ".png";

        img.Save(path);

        Response.End();

      } 
    }

    /// 

    ///      

    /// 

    ///       

    ///    

    ///True if the encoding succeeded, false if the content is empty or too large to fit in a QR code

    public static bool GetQRCode(string strContent, MemoryStream ms)

    {

      ErrorCorrectionLevel Ecl = ErrorCorrectionLevel.M; //       

      string Content = strContent;//     

      QuietZoneModules QuietZones = QuietZoneModules.Two; //     

      int ModuleSize = 12;//  

      var encoder = new QrEncoder(Ecl);

      QrCode qr;

      if (encoder.TryEncode(Content, out qr))//       ,        

      {

        var render = new GraphicsRenderer(new FixedModuleSize(ModuleSize, QuietZones));

        render.WriteToStream(qr.Matrix, ImageFormat.Png, ms);

      }

      else

      {

        return false;

      }

      return true;

    }