Note: This article Participated in TechNet Guru Competition May 2017 and won Silver Medal.


In this article, we will explain how to create a QR Code Generator in ASP.NET Core 1.0, using Zxing.Net.


We tried to create a QR Code Generator in ASP.NET Core, using third-party libraries but in most of the cases codes are not fully supported in ASP.NET Core because of some version issues, etc. We searched a lot on Google but finally found "Zxing.Net" and it is a library, which supports decoding and generating of the barcodes. We had a discussion with "MicJahn" and came up with a great solution.

Before reading this article, you must read the articles given below for ASP.NET Core knowledge.


A library, which supports decoding and generating of the barcodes (Example: QR Code, PDF 417, EAN, UPC, Aztec, Data Matrix, Codabar) within the images.

Assemblies required

The assemblies given below are required for QR Code Generator.

using Microsoft.AspNetCore.Razor.TagHelpers; 
using System; 
using System.IO; 
using ZXing.QrCode;

Packages required

We need the packages given below for drawing and creating QR Code Generator.

"CoreCompat.System.Drawing": "1.0.0-beta006",   
"ZXing.Net": "0.15.0"


QRCodeTagHelper class given below contains QR Code Generator methods etc.

namespace QRCodeApp { 
    public class QRCodeTagHelper: TagHelper { 
        public override void Process(TagHelperContext context, TagHelperOutput output) { 
            var QrcodeContent = context.AllAttributes["content"].Value.ToString(); 
            var alt = context.AllAttributes["alt"].Value.ToString(); 
            var width = 250; // width of the Qr Code   
            var height = 250; // height of the Qr Code   
            var margin = 0; 
            var qrCodeWriter = new ZXing.BarcodeWriterPixelData { 
                Format = ZXing.BarcodeFormat.QR_CODE, 
                    Options = new QrCodeEncodingOptions { 
                        Height = height, Width = width, Margin = margin 
            var pixelData = qrCodeWriter.Write(QrcodeContent); 
            // creating a bitmap from the raw pixel data; if only black and white colors are used it makes no difference   
            // that the pixel data ist BGRA oriented and the bitmap is initialized with RGB   
            using(var bitmap = new System.Drawing.Bitmap(pixelData.Width, pixelData.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb)) 
            using(var ms = new MemoryStream()) { 
                var bitmapData = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, pixelData.Width, pixelData.Height), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppRgb); 
                    // we assume that the row stride of the bitmap is aligned to 4 byte multiplied by the width of the image   
                    System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan0, pixelData.Pixels.Length); 
                } finally
                // save to stream as PNG   
                bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png); 
                output.TagName = "img"
                output.Attributes.Add("width", width); 
                output.Attributes.Add("height", height); 
                output.Attributes.Add("alt", alt); 
                output.Attributes.Add("src", String.Format("data:image/png;base64,{0}", Convert.ToBase64String(ms.ToArray()))); 


The code given below will display QR Code Generator.

    ViewData["Title"] = "Home"; 
A library which supports decoding and generating of barcodes (like QR Code, PDF 417, EAN, UPC, Aztec, Data Matrix, Codabar) within images. 
<qrcode alt="QR Code" content="" /> 


The code Injecting TagHelper given below is in the entire Application.

@addTagHelper "*, QRCodeApp"


The dependencies given below are required to create QR Code Application.

  "dependencies": { 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0"
    "Microsoft.AspNetCore.Mvc": "1.1.2"
    "Microsoft.AspNetCore.Mvc.Core": "1.1.2"
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0"
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1"
    "Microsoft.AspNetCore.StaticFiles": "1.1.1"
    "Microsoft.Extensions.Logging.Console": "1.0.0"
    "CoreCompat.System.Drawing": "1.0.0-beta006"
    "ZXing.Net": "0.15.0" 
  "tools": { 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" 
  "frameworks": { 
    "net452": { } 
  "buildOptions": { 
    "emitEntryPoint": true
    "preserveCompilationContext": true 
  "publishOptions": { 
    "include": [ 
  "scripts": { 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"




You can download ASP.NET Core 1.0 source code from the MSDN Code using the links mentioned below.

See Also

It's recommended to read more articles related to ASP.NET Core.