二维码生成与解析(使用ThoughtWorks.QRCode)

二维码生成

QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //  support different mode

qrCodeEncoder.QRCodeScale = 1;
qrCodeEncoder.QRCodeVersion = 1.0;

qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L; // support different mode

string qrCodeContent = "test";

Bitmap img = qrCodeEncoder.Encode(qrCodeContent);

string filePath = "c:\\qrcode.png" // support different image format

img.Save(filePath);

二维码解析

QRCodeDecoder decoder = new QRCodeDecoder();
string decodedString = decoder.decode(new QRCodeBitmapImage(new Bitmap("c:\\qrcode.png"))); // decodedStringshould be "test".

C#使用ThoughtWorks.QRCode.dll生成二维码以及解码

最近一段时间在网上找了二维码的生成代码,但是生成的二维码右上角的背景色总是透明的,所以自己拿过来改了一下,给自己做个总结。

代码如下:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;

namespace 生成二维码
{
  class QRCodeHelper
  {
    #region 根据内容获取二维码
    /// <summary>
    /// 根据内容获取二维码
    /// </summary>
    /// <param name="str">内容</param>
    /// <returns>返回二维码图片</returns>
    public static Bitmap GetQRCodeBmp(string str)
    {
      try
      {
        QRCodeEncoder qRCodeEncoder = new QRCodeEncoder();//实例化二维码对象
        qRCodeEncoder.QRCodeBackgroundColor = Color.White;//设置二维码背景颜色
        qRCodeEncoder.QRCodeForegroundColor = Color.Black;//设置二维码前景色
        qRCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//设置二维码编码类型
        qRCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//设置二维码拍错率
        qRCodeEncoder.QRCodeScale = 4;//设置二维码的大小
        qRCodeEncoder.QRCodeVersion = 7;//设置二维码的版本
        Bitmap bmp = qRCodeEncoder.Encode(str);
        //对二维码进行重绘
        Bitmap bitmap = new Bitmap(bmp.Width + 3, bmp.Height + 3);
        Graphics g = Graphics.FromImage(bitmap);
        g.Clear(Color.White);
        g.DrawRectangle(new Pen(Color.White), new Rectangle(0, 0, bitmap.Width, bitmap.Height));
        g.DrawImage(bmp, new PointF(2, 2));

        return bitmap;
      }
      catch (Exception)
      {
        return null;
      }    
    }
    /// <summary>
    /// 对二维码图片进行处理
    /// </summary>
    /// <param name="QrImg">二维码</param>
    /// <returns>处理过后的二维码</returns>
    public Bitmap RedrawQrImg(Bitmap QrImg)
    {
      Bitmap bitmap = new Bitmap(QrImg.Width + 3, QrImg.Height + 3);
      Graphics g = Graphics.FromImage(bitmap);
      g.Clear(Color.White);
      g.DrawRectangle(new Pen(Color.White), new Rectangle(0, 0, bitmap.Width, bitmap.Height));
      g.DrawImage(QrImg, new PointF(2, 2));

      return bitmap;
    }
    /// <summary>
    /// 二维码解码
    /// </summary>
    /// <param name="filePath">图片路径</param>
    /// <returns></returns>
    public static string CodeDecoder(string filePath)
    {
      try
      {
        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;
      }
      catch (Exception)
      {
        return null;
      }
    }
  #endregion
  }
}

使用

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebDemo
{
    public partial class QRTest : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
           Bitmap bmap= QRCodeHelper.GetQRCodeBmp("WWW.QQ.com");
           bmap.Save(Server.MapPath("~/Img/saved.png"));

            string fullpath = Server.MapPath("~/Img/ewm.png");
            string resultstr = QRCodeHelper.CodeDecoder(fullpath);

            Response.Write(resultstr);
        }
    }
}

如图

在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: thoughtworks.qrcode是一个二维码生成工具,可以帮助用户快速生成二维码,并支持自定义二维码的颜色、大小、形状等属性。该工具由ThoughtWorks公司开发,旨在为用户提供便捷的二维码生成服务。 ### 回答2: thoughtworks.qrcode 是ThoughtWorks公司开发的一个二维码生成和解码库。二维码是一种存储数据的矩阵条形码,可以被扫描器或手机相机读取。该库提供了简单易用的API,可以方便地在各种编程语言中生成和解码二维码。 使用 thoughtworks.qrcode,可以轻松地生成各种类型的二维码,包括网址、文本、邮件地址、电话号码和其他自定义数据。生成二维码只需要提供相应的信息和设置,库会自动生成相应的二维码图片。生成的二维码可以保存为图片文件或直接显示在网页上。 除了生成二维码,thoughtworks.qrcode还提供了解码功能,可以将扫描到的二维码解析为相应的数据。可以通过该库获得二维码中包含的文本、网址、邮件地址等信息。解码功能可以用于二维码的自动识别和读取。 thoughtworks.qrcode的优点是简单易用、功能强大。无论是生成还是解码二维码,只需要几行代码就可以实现。该库还支持自定义二维码的样式、大小和颜色等参数,可以满足不同的需求。 总之,thoughtworks.qrcode是一个方便实用的二维码生成和解码库,适用于各种编程语言和应用场景。无论是为个人还是商业目的,都可以利用该库轻松地生成和解码二维码。 ### 回答3: thoughtworks.qrcode是一个开源的二维码生成工具,由全球知名的软件公司ThoughtWorks开发和维护。它提供了一种简单而高效的方式来生成各种类型的二维码,包括URL链接、文本、电子名片、Wi-Fi连接等。 thoughtworks.qrcode基于Java编程语言开发,可以很容易地集成到各种应用程序中。它提供了丰富的API,使开发人员可以根据自己的需求生成定制化的二维码。同时,thoughtworks.qrcode还支持多种二维码格式,如QR Code、Aztec Code、Data Matrix等,使用户可以根据需要选择最适合的格式。 thoughtworks.qrcode还具有很好的扩展性和可定制性。用户可以根据自己的需求对生成的二维码进行个性化的设计,比如添加自定义的颜色、背景图片、LOGO等,增加二维码的辨识度和美观度。此外,thoughtworks.qrcode还支持二维码的错误纠正功能,可以在一定的损坏和变形情况下仍能正确扫描。 除了生成二维码,thoughtworks.qrcode还提供了解析已有二维码的功能。用户可以通过该工具轻松地解析已有的二维码,并获取其中的信息,如URL、文本内容等。这对于需要处理大量二维码的应用场景非常有用,比如扫码登录、扫码支付等。 总的来说,thoughtworks.qrcode是一个功能强大且易于使用的开源二维码生成工具,通过它,开发人员可以方便地生成和解析各种类型的二维码,为应用程序增加功能和美观度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值