Reading and Generating QR codes in Python using QRtools
Last Updated :
03 Jul, 2022
This article aims to introduce the use of the python library: qrtools. This library can be used to both read QR codes and generate them.
What are QR codes?
QR code, or quick response code, is a trademark for a type of 2 dimensional barcode. 2 dimensional barcodes are similar to one dimensional barcodes, but can store more information per unit area.
Installation and Dependencies
- Debian Linux: qrtools can be installed on debian based linux systems with the following commands
sudo apt-get update
sudo apt-get install python-qrtools
The following dependencies must be installed as well
[sudo] pip install pypng
[sudo] pip install zbar
[sudo] pip install pillow
- Windows: qrtools can be installed on windows by downloading the file from here. On downloading and extraction, run the following command from inside the folder
python setup.py install
Generate a QR Code
qrtools contains a class QR (can be viewed in the source code), for which we must initially create an object. The object takes the following arguments
- data
- pixel_size
- level
- margin_size
- data_type
To create a QR code with default settings, we must simply specify the data while creating the object. Note that the data must be a unicode object if non-ASCII objects are going to be used.
Python3
# Python program to generate QR code
from qrtools
import QR
# creates the QR object
my_QR = QR(data = u"Example")
# encodes to a QR code
my_QR.encode()
If the program runs successfully, it returns a value of 0, and the QR code is stored in the tmp folder. To know the exact location, use the following command
print (my_QR.filename)
Sample output
/tmp/qr-1496334996.385343/7489ebbcc2a00056ddaaaac190bce473e5c03696ea1bd8ed83cf59a174283862.png

This file can now be moved to another folder as per our convenience
Python3
# Python program to generate QR code
from qrtools import QR
import os
my_QR = QR(data = u"Example")
my_QR.encode()
# command to move the QR code to the desktop
os.system("sudo mv " + my_QR.filename + " ~/Desktop")
The pixel value of the QR code may also be changed by specifying the value during the creation of the QR object. The default size tends to be a little small for reading using scanners on smartphones, so a size of around 10 would be ideal for such purposes, for example:
my_QR = QR(data = u"example", pixel_size = 10)
The below QR code has pixel size = 10, and has been encoded with a URL

We can also add email data, sms data, mms data, bookmarks, etc to the QR code. The following code excerpt is taken from the source code, which specifies the various data types that can be used along with the format of the data that would be required for its usage:
Python3
# use these for custom data formats eg. url, phone number, VCARD
# data should be an unicode object or a list of unicode objects
data_encode = {
'text': lambda data: data,
'url': encode_url,
'email': lambda data: 'mailto:' + re.compile(
r'^mailto:', re.IGNORECASE
).sub('', data),
'emailmessage': lambda data: 'MATMSG:TO:' + data[0] + ';SUB:' + data[1] +
';BODY:' + data[2] + ';;',
'telephone': lambda data: 'tel:' + re.compile(
r'^tel:', re.IGNORECASE
).sub('', data),
'sms': lambda data: 'SMSTO:' + data[0] + ':' + data[1],
'mms': lambda data: 'MMSTO:' + data[0] + ':' + data[1],
'geo': lambda data: 'geo:' + data[0] + ', ' + data[1],
'bookmark': lambda data: "MEBKM:TITLE:" + data[0] + ";URL:" +
data[1] + ";;",
# phonebook or meCard should be a list of tuples like this:
# [('N', 'Name'), ('TEL', '231698890'), ...]
'phonebook': lambda data: "MECARD:" + ";".join([":".join(i)
for i in data]) + ";"
}
From the above code, we observe the various data types that can be assigned and used while creating QR codes. For example, to use a bookmark as data we must provide data as a list, consisting of a title and the url. To accomplish this, we must do the following
Python3
# Python program to generate QR code
from qrtools import QR
# creates the QR object
my_QR = QR(data = [u"geeksforgeeks", u"https://www.geeksforgeeks.org/"],
data_type = 'bookmark')
# encodes to a QR code
my_QR.encode()
Read a QR code
Scanning and reading a QR code is relatively simple. While creating the QR object, we must simply specify the path to the QR code as an argument. Suppose we are trying to decode the QR code created at the beginning of the article.
Python3
# Python program to Scan and Read a QR code
from qrtools import QR
my_QR = QR(filename = "home/user/Desktop/qr.png")
# decodes the QR code and returns True if successful
my_QR.decode()
# prints the data
print (my_QR.data)
Output :
Example

We may also print the values of the other parameters passed while creating the QR object to generate the QR code, for example, using the same QR code generated at the beginning of the article, additionally adding these print statements would give the following additional output
print (my_QR.data_type)
print (my_QR.pixel_size)
print (my_QR.margin_size)
Output:
text
3
4
Similar Reads
Generate QR Code using qrcode in Python
A Quick Response Code or a QR Code is a two-dimensional bar code used for its fast readability and comparatively large storage capacity. It consists of black squares arranged in a square grid on a white background.Python has a library "qrcode" for generating QR code images. It can be installed using
2 min read
Wi-Fi QR Code Generator Using Python
Prerequisite: Getting Saved Wifi Passwords using Python We know the wireless network is the most common network adapter for today, Because of its supports portability and User friendly. In this article, we will see how we can get the current saved Wi-Fi name and passwords and generate QR code to con
2 min read
Reading an image in OpenCV using Python
Prerequisite: Basics of OpenCVIn this article, we'll try to open an image by using OpenCV (Open Source Computer Vision) library.  Following types of files are supported in OpenCV library:Windows bitmaps - *.bmp, *.dibJPEG files - *.jpeg, *.jpgPortable Network Graphics - *.png WebP - *.webp Sun raste
6 min read
Detect and Read Barcodes with OpenCV in Python
A barcode is a graphical representation of data that is machine-readable. It consists of parallel lines or rectangles of varying widths and spacings, along with specific patterns, that encode information. Barcodes are widely used for automatic identification and tracking of products, assets, invento
3 min read
Create a Random Password Generator using Python
In this article, we will see how to create a random password generator using Python. Passwords are a means by which a user proves that they are authorized to use a device. It is important that passwords must be long and complex. It should contain at least more than ten characters with a combination
5 min read
How To Encode And Decode A Message using Python?
Encryption is the process of converting a normal message (plain text) into a meaningless message (Ciphertext). Whereas, Decryption is the process of converting a meaningless message (Cipher text) into its original form (Plain text). In this article, we will take forward the idea of encryption and de
3 min read
Python | Generate QR Code using pyqrcode module
Let's see how to generate QR code in Python using pyqrcode module. pyqrcode module is a QR code generator. The module automates most of the building process for creating QR codes. This module attempts to follow the QR code standard as closely as possible. The terminology and the encodings used in py
2 min read
Python | Message Encode-Decode using Tkinter
Prerequisite : Basics of TkinterPython offers multiple options for developing GUI (Graphical User Interface). Out of all the GUI methods, tkinter is most commonly used method. It is a standard Python interface to the Tk GUI toolkit shipped with Python. Python with tkinter outputs the fastest and eas
5 min read
Flutter - QR Code Scanner and QR Generator
Accessing websites, images, and files using QR codes is widely used these days. These QR Codes are used for doing payments which is easy to use. You can see this feature in various payment apps such as Google Pay, Amazon Pay, and many more. In today's article, we are going to see how to generate QR
5 min read
Take and convert Screenshot to PDF using Python
In order to take and convert a screenshot to PDF, firstly the PyAutoGUI can be used which is an automation library in python which can control mouse, keyboard and can handle many GUI control tasks. Secondly, for the conversion PIL(Python Imaging Library) of python can be used which provides image pr
3 min read