QRCoder

C#源码 2025-08-12

QRCoder

建造代码覆盖范围建立状态Nuget软件包
最新 /稳定
CI /最后一个提交

信息

QRCoder是一个简单的库,用C#.NET编写,它使您可以创建QR码。它没有对外部库1的任何依赖关系,可以作为nuget上的软件包可用,并支持.NET Framework,.NET Core,.NET标准和.NET。可以在此处找到支持的目标框架的完整列表。

随意抓取/分叉该项目并使其变得更好!

有关更多信息,请参见: QRCode Wiki |创作者的博客(英语)|创作者的博客(德语)

发行说明

可以在此处阅读当前和所有版本的发行说明:?发行说明

法律信息和学分

QRCoder是Raffael Herrmann的一个项目,于10/2013首次发行。它是根据MIT许可证获得许可的。


安装

请检查此GitHub存储库,或通过Nuget软件包管理器安装QRCoder 。如果要使用Nuget,只需搜索“ QRCoder ”或在Nuget软件包管理器中运行以下命令:

PM > Install-Package QRCoder 

CI构建

Nuget Feed仅包含主要/稳定的版本。如果您需要最新的功能和功能,则可以通过GitHub软件包使用CI构建。 (可以在此处找到有关如何在Nuget软件包管理器中使用GitHub软件包的更多信息。)

用法

您只需要几行代码即可生成第一个QR码。

 using ( QRCodeGenerator qrGenerator = new QRCodeGenerator ( ) )
using ( QRCodeData qrCodeData = qrGenerator . CreateQrCode ( "The text which should be encoded." , QRCodeGenerator . ECCLevel . Q ) )
using ( PngByteQRCode qrCode = new PngByteQRCode ( qrCodeData ) )
{
    byte [ ] qrCodeImage = qrCode . GetGraphic ( 20 ) ;
}

还有很多其他选择。因此,请随时在我们的Wiki:Wiki:如何使用QRCoder中阅读更多信息

特殊渲染类型

除了用于以位图格式创建QR码的普通pngbyteqrcode-class(如上示例所示)外,还有更多QR代码渲染类,每个类别是另一个特殊目的。

  • 二维码
  • artqrcode
  • ASCIIQRCODE
  • base64qrcode
  • bitmapbyteqrcode
  • pdfbyteqrcode
  • pngbyteqrcode
  • PostScriptQrcode
  • SVGQRCODE
  • UNITYQRCODE(通过QRCoder .NITY
  • XAMLQRCODE(通过QRCoder .XAML

注意:请注意,并非所有目标框架上都有所有渲染器。请检查我们Wiki中的兼容性表,以查看您喜欢的目标框架上是否有特定的渲染器。

有关不同渲染类型的更多信息,请单击上面列表中的一种类型或查看:Wiki:高级用法-QR -CODE RENDERERS

payloadGenerator.cs-生成QR码有效载荷

从技术上讲,QR码只是文本/字符串的视觉表示。但是,大多数QR码读取器都可以读取触发不同动作的“特殊” QR码。

例如:WIFI-QRCODES在智能手机扫描时,智能手机会自动加入访问点。

在生成QR代码时,通过使用特殊结构化有效载荷字符串生成此“特殊” QR码。 PayloadGenerator.cs类可帮助您生成此有效负载字符串。例如,要生成wifi有效载荷,您只需要一行一行代码:

 PayloadGenerator . WiFi wifiPayload = new PayloadGenerator . WiFi ( "MyWiFi-SSID" , "MyWiFi-Pass" , PayloadGenerator . WiFi . Authentication . WPA ) ;

要从此有效负载中生成QR码,只需调用“ tostring()” - 方法并将其传递给QRCoder 。

 //[...]
QRCodeData qrCodeData = qrGenerator . CreateQrCode ( wifiPayload . ToString ( ) , QRCodeGenerator . ECCLevel . Q ) ;
//[...]

您还可以使用接受有效载荷作为参数的过载方法。有效负载生成器可以具有QR代码版本集(默认为自动集),ECC级别(默认为M)和ECI模式(默认为自动检测)。

 //[...]
QRCodeData qrCodeData = qrGenerator . CreateQrCode ( wifiPayload ) ;
//[...]

或者,如果要覆盖有效载荷生成器设置的ECC级别,则可以使用允许设置ECC级别的过载方法。

 //[...]
QRCodeData qrCodeData = qrGenerator . CreateQrCode ( wifiPayload , QRCodeGenerator . ECCLevel . Q ) ;
//[...]

您可以在我们的Wiki中了解有关有效载荷发生器的更多信息。

PAYLOADGENERATOR支持以下类型的有效载荷:

  • bezahlcode
  • 像比特币一样的加密货币(比特币,比特币现金,莱特币)付款地址
  • 书签
  • 日历事件(iCal/vevent)
  • ContactData(Mecard/Vcard)
  • 地理位置
  • Girocode
  • 邮件
  • MMS
  • Monero地址/付款
  • 一次性通信
  • Phonenumber
  • RussiaPaymentorder(56042-2014)
  • Shadowsocks配置
  • Skype电话
  • Slovenianupnqr
  • 短信
  • Swissqrcode(ISO-20022)
  • URL
  • WhatsAppMessage
  • 无线上网

(1)取决于目标框架.NET库system.drawing.common and system.text.encoding.codepages将用作软件包依赖项。

下载源码

通过命令行克隆项目:

git clone https://github.com/codebude/QRCoder.git