dcsimg

Dynamically Generating QR Codes In C#

WEBINAR:
On-Demand

Application Security Testing: An Integral Part of DevOps


Introduction

QR stands for Quick Response; it's a type of two-dimensional barcode that is used to store small amounts of text or data. It was created by the Japanese corporation Denso-Wave and aims to decode contents at high speed. Nowadays, QR Codes are used in mobile phones that can use the contents of QR Codes as a URL to open in the phone's Web browser. By using QR Codes, a developer can encode content into a QR Code image that can be saved in JPEG, GIF, PNG, or Bitmap formats. Also, by using the reverse technique, the QR decoder can decode a QR Code image. To scan a QR Code, you need to have a scanner app on your smartphone that can scan QR code.

In this article, I will briefly describe and demonstrate the functionalities of the QR Code library that works with ASP.NET MVC applications.

Advantages of QR Codes

The main advantage of QR Codes is their versatility. QR Codes can be a great response mechanism for mobile users. QR Codes are easily trackable. By using analytics and unique codes, marketers can gain some valuable information about how well campaigns are doing. QR Codes can be cost effective because you don't have to pay anything when creating the QR code. QR Codes are error free. The only way to connect consumers to online content is by using a URL. But, typing a URL is time-consuming and inconvenient on a mobile screen. Consumers are also likely to make errors when typing. Scanning a QR Code that opens an URL is much faster and error-free process.

Generating QR Codes by Using the ZXing.Net Library

ZXing.Net is an open source library. It was originally created for Java applications for creating multi-format 1D/2D barcode images. The latest version of ZXing.Net is also compatible with .NET 2.0, .NET 3.5, .NET 4.0, .NET 4.5, .NET 4.6 and the .NET 4.7 Frameworks.

In the following ASP .NET application, I will be using the "ZXing.Net" library to generate a QR Code and read data from that image.

Step 1

Create a new ASP.NET Web Application from Visual Studio. Add the "ZXing.Net" NuGet library in our application. To add ZXing.Net, right-click your application -> Select Manage NuGet Packages -> Go to Browse Tab -> Search for ZXing.Net ->. From the list, select ZXing.Net and install it. Refer to Figure 1, that shows how to install the component.

Installing the ZXing.NET NuGet package
Figure 1: Installing the ZXing.Net NuGet package

Step 2

Once you install the ZXing.Net package in your application, next add an ASPX page named QCCode.aspx in your project (see Figure 2).

Adding the ASPX page in the Project
Figure 2: Adding the ASPX page in the Project

Open your ASPX page and write the code given in the following code snippet.

<%@ Page Language="C#" AutoEventWireup="true"
   CodeBehind="QCCode.aspx.cs"
   Inherits="QRCodeSample.QCCode" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
   <head runat="server">
      <title>Sample ASP.NET application to Generate and
         Read QR Code from a Browser</title>
   </head>
   <body>
      <form id="QCFrom" runat="server">
         <div>
            <asp:TextBox ID="txtQCCode" runat="server">
            </asp:TextBox>
            <asp:Button ID="btnQCGenerate" runat="server"
               Text="Create My QR Code"
               OnClick="btnQCGenerate_Click" />
            <hr/>
            <asp:Image ID="imgageQRCode" Width="100px"
               Height="100px" runat="server"
               Visible="false" /> <br /><br />
            <asp:Button ID="btnQCRead" Text="Read My QR Code"
               runat="server" OnClick="btnQCRead_Click" />
               <br /><br />
            <asp:Label ID="lblQRCode" runat="server">
            </asp:Label>
         </div>
      </form>
   </body>
   </html>

Step 3

Now, open the code behind file QCCode.Aspx.cs; copy and paste the code mentioned in the following snippet.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using ZXing;


namespace QRCodeSample
{
   public partial class QCCode : System.Web.UI.Page
   {
      protected void Page_Load(object sender, EventArgs e)
      {

      }
      // Event to generate the QC Code
      protected void btnGenerate_Click(object sender, EventArgs e)
      {
         GenerateMyQCCode(txtQCCode.Text);
      }
      protected void btnRead_Click(object sender, EventArgs e)
      {
         ReadQRCode();
      }
      private void GenerateMyQCCode(string QCText)
      {
         var QCwriter = new BarcodeWriter();
         QCwriter.Format = BarcodeFormat.QR_CODE;
         var result = QCwriter.Write(QCText);
         string path = Server.MapPath("~/images/MyQRImage.jpg");
         var barcodeBitmap = new Bitmap(result);

         using (MemoryStream memory = new MemoryStream())
         {
            using (FileStream fs = new FileStream(path,
               FileMode.Create, FileAccess.ReadWrite))
            {
               barcodeBitmap.Save(memory, ImageFormat.Jpeg);
               byte[] bytes = memory.ToArray();
               fs.Write(bytes, 0, bytes.Length);
            }
         }
         imgageQRCode.Visible = true;
         imgageQRCode.ImageUrl = "~/images/MyQRImage.jpg";

      }

      private void ReadQRCode()
      {
         var QCreader = new BarcodeReader();
         string QCfilename = Path.Combine(Request.MapPath
            ("~/images"), "MyQRImage.jpg");
         var QCresult = QCreader.Decode(new Bitmap(QCfilename));
         if (QCresult != null)
         {
            lblQRCode.Text = "My QR Code: " + QCresult.Text;
         }
      }
   }
}

In the preceding code, I have added a reference of the ZXing namespace to generate and read QR Codes in our Web applications.

Now, run the application. You will get a result as shown in Figure 3.

Output of the execution
Figure 3: Output of the execution

Conclusion

Thanks for reading the article. I hope it helped you to search for an easy solution to create QR Codes in .NET.

That's all for today. Happy reading!



About the Author

Tapas Pal

I am working in Microsoft Technology for last 15 years and presently working with Cognizant Technology Solutions, India as Senior Architect. I have completed TOGAF 9.1,Microsoft Certification on .NET 1.1 , .NET 2.0, SQL Server 2005 and Sharepoint. Please visit my Blog - http://tapas-pal.blogspot.com/

Related Articles

Comments

  • There are no comments yet. Be the first to comment!

  • You must have javascript enabled in order to post comments.

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • As all sorts of data becomes available for storage, analysis and retrieval - so called 'Big Data' - there are potentially huge benefits, but equally huge challenges...
  • The agile organization needs knowledge to act on, quickly and effectively. Though many organizations are clamouring for "Big Data", not nearly as many know what to do with it...
  • Cloud-based integration solutions can be confusing. Adding to the confusion are the multiple ways IT departments can deliver such integration...

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date
×
We have made updates to our Privacy Policy to reflect the implementation of the General Data Protection Regulation.