Skip to content
A pure C# Open Source QR Code implementation
Branch: master
Clone or download
codebude Merge pull request #165 from oheim/master
Add support for binary data
Latest commit 7103f41 Mar 11, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Images for wiki Oct 21, 2017
QRCoder Merge pull request #165 from oheim/master Mar 11, 2019
QRCoderConsole Manually eliminated trailing whitespace in many but not all source fi… Oct 30, 2018
QRCoderDemo Manually eliminated trailing whitespace in many but not all source fi… Oct 30, 2018
QRCoderDemoUWP Manually eliminated trailing whitespace in many but not all source fi… Oct 30, 2018
QRCoderTests fix--amount-space-issue Jan 27, 2019
.gitattributes Create repository Oct 13, 2013
.gitignore
CheckBinaries.bat Added .NETCore 2.0 Sep 21, 2017
Compile.bat Updated build scripts Jan 27, 2017
Compile_Single.bat Added .NETCore 2.0 Sep 21, 2017
LICENSE.txt Dropped support for Unity Nov 17, 2018
MyGet.bat Raised dev counter Nov 23, 2018
QRCoder.NETCore20.sln Added .NETCore 2.0 Sep 21, 2017
QRCoder.nuspec Removed Unity dependencies from Nuget package Nov 17, 2018
QRCoderPackageBuild.sln Added .NETCore 2.0 Sep 21, 2017
QRCoderProject.NET40.sln revert changes to solution file Oct 27, 2018
QRCoderProject.NETCore.sln Added .NETCore 2.0 Sep 21, 2017
QRCoderProject.Portable.sln GUI for UWP demo app Sep 10, 2016
QRCoderProject.sln Changed compile order Dec 9, 2016
QRCoderProject.sln.DotSettings Cleaned up initial project, changed a few public fields to properties May 8, 2016
readme.md Added Nuget badge Mar 3, 2019

readme.md

QRCoder

qrcoder MyGet Build Status NuGet Badge

Info

QRCoder is a simple library, written in C#.NET, which enables you to create QR codes. It hasn't any dependencies to other libraries and is available as .NET Framework and .NET Core PCL version on NuGet.

Feel free to grab-up/fork the project and make it better!

For more information see: QRCode Wiki | Creator's blog (english) | Creator's blog (german)

Legal information and credits

QRCoder is project by Raffael Herrmann and was first released in 10/2013. It's licensed under the MIT license.


Installation

Either checkout this Github repository or install QRCoder via NuGet Package Manager. If you want to use NuGet just search for "QRCoder" or run the following command in the NuGet Package Manager console:

PM> Install-Package QRCoder

Note: The NuGet feed contains only stable releases. If you wan't the latest build add one of the following urls to the "Package Sources" of Visual Studio's NuGet Package Manager options.

NuGet V3 feed URL (Visual Studio 2015+): https://www.myget.org/F/qrcoder/api/v3/index.json

NuGet V2 feed URL (Visual Studio 2012+): https://www.myget.org/F/qrcoder/api/v2

Usage

You only need five lines of code, to generate and view your first QR code.

QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode("The text which should be encoded.", QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20);

Optional parameters and overloads

The GetGraphics-method has some more overloads. The first two enable you to set the color of the QR code graphic. One uses Color-class-types, the other HTML hex color notation.

//Set color by using Color-class types
Bitmap qrCodeImage = qrCode.GetGraphic(20, Color.DarkRed, Color.PaleGreen, true);

//Set color by using HTML hex color notation
Bitmap qrCodeImage = qrCode.GetGraphic(20, "#000ff0", "#0ff000");

The another overload enables you to render a logo/image in the center of the QR code.

Bitmap qrCodeImage = qrCode.GetGraphic(20, Color.Black, Color.White, (Bitmap)Bitmap.FromFile("C:\\myimage.png"));

There are a plenty of other options. So feel free to read more on that in our wiki: Wiki: How to use QRCoder

Special rendering types

Besides the normal QRCode class (which is shown in the example above) for creating QR codes in Bitmap format, there are some more QR code rendering classes, each for another special purpose.

(*) - These classes are only available in the .NET Framework/.NET Standard version. If you use the PCL version (e.g. for Universal apps), you have to use either BitmapByteQRCode or PngByteQRCode classes.
(**) - This class is hosted in an own package (QRCoder.Unity).

For more information about the different rendering types click on one of the types in the list above or have a look at: Wiki: Advanced usage - QR-Code renderers

PayloadGenerator.cs - Generate QR code payloads

Technically QR code is just a visual representation of a text/string. Nevertheless most QR code readers can read "special" QR codes which trigger different actions.

For example: WiFi-QRcodes which, when scanned by smartphone, let the smartphone join an access point automatically.

This "special" QR codes are generated by using special structured payload string, when generating the QR code. The PayloadGenerator.cs class helps you to generate this payload strings. To generate a WiFi payload for example, you need just this one line of code:

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

To generate a QR code from this payload, just call the "ToString()"-method and pass it to the QRCoder.

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

You can also use overloaded method that accepts Payload as parameter. Payload generator can have QR Code Version set (default is auto set), ECC Level (default is M) and ECI mode (default is automatic detection).

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

Or if you want to override ECC Level set by Payload generator, you can use overloaded method, that allows setting ECC Level.

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

You can learn more about the payload generator in our Wiki.

The PayloadGenerator supports the following types of payloads:

You can’t perform that action at this time.