欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)

程序员文章站 2022-05-26 09:55:26
最近做项目遇到生成二维码的问题,发现网上用的最多的是thoughtworks.qrcode和qrcode.net两种方式。访问官网看着例子写了两个demo,使用过程中发现两...

最近做项目遇到生成二维码的问题,发现网上用的最多的是thoughtworks.qrcode和qrcode.net两种方式。访问官网看着例子写了两个demo,使用过程中发现两个都挺好用的,thoughtworks.qrcode的功能更多一些,但是dll文件有6兆,qrcode.net只有400多k,大家根据自己的需要选择吧。附上代码仅供参考。

并且提供vs2013写的一个demo提供给大家免费下载。如有疑问欢迎交流。

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();

      } 
    }

    /// <summary>

    /// 获取二维码

    /// </summary>

    /// <param name="strcontent">待编码的字符</param>

    /// <param name="ms">输出流</param>

    ///<returns>true if the encoding succeeded, false if the content is empty or too large to fit in a qr code</returns>

    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;

    }

下面是下载地址:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。