More tools for creating QR Codes in Linux
March 29, 2015 1 Comment
In my previous post I showed how to install CuterCode and Qreator, two simple GUI applications for producing QR Codes, in Gentoo Linux. I have now found a couple of other GUI applications, both of which offer more features than the aforementioned two, such as allowing you to specify the amount of error correction to be incorporated into the QR Code. QR Code codewords are 8 bits long and use the Reed–Solomon error correction algorithm, with four error correction levels possible in the case of QR Codes:
Level L (Low): 7% of codewords can be restored.
Level M (Medium): 15% of codewords can be restored.
Level Q (Quartile): 25% of codewords can be restored.
Level H (High): 30% of codewords can be restored.
The higher the level of error correction, the lower the storage capacity of the QR Code.
And now to the two applications …
This is a Java application, so first make sure you have installed a Java run-time environment (or Java Development Toolkit, which will include the JRE) via Portage.
Download to your home directory the archive
qrcodegen_1.14.2.zip containing the compiled Java application, not the archive
qrcodegen_1.14.2_src.zip with the source code (‘quellcode’ in German), from the application’s Web site. Unzip it to the directory
~/qrcodegen_1.14.2/ then enter the directory and launch the Java application from the command line as shown below:
Alternatively you can create a Desktop Configuration file
QRCodeGen.desktop containing the following (change ‘fitzcarraldo’ to your own user name, of course):
[Desktop Entry] Categories=Graphics Comment[en_GB]=QR Code Generator is a program that lets you generate and print QR Codes easily. Comment=QR Code Generator is a program that lets you generate and print QR Codes easily. Exec=java -jar /home/fitzcarraldo/qrcodegen_1.14.2/qrcodegen/QRCodeGen.jar GenericName[en_GB]=QRCodeGen GenericName=QRCodeGen Icon=/home/fitzcarraldo/qrcodegen_1.14.2/qrcodegen/icon.png MimeType= Name[en_GB]=QRCodeGen Name=QRCodeGen Path=/home/fitzcarraldo/qrcodegen_1.14.2/qrcodegen/ StartupNotify=true Terminal=false TerminalOptions= Type=Application X-DBUS-ServiceName= X-DBUS-StartupType= X-KDE-SubstituteUID=false X-KDE-Username=
and make it executable:
You can choose a nice PNG icon by using Google Images to search for ‘qr code icon png’ and save the image with the file name
icon.png in the same directory. Then you can launch QR code Generator by double-clicking on the Desktop Configuration file.
Download the tarball
qr-tools-1.2.tar.gz from the application’s Web site, unpack it to the directory
~/qr-tools-1.2/ and make the Python scripts executable:
Make sure you have installed the package
media-gfx/zbar with the
python USE flag set, so that the Python
zbar module is also installed:
(You may as well add the
python USE flag in the line for
media-gfx/zbar in the Portage
package.use file so that ZBar’s Python module is installed if you upgrade or re-install ZBar via Portage in future).
Check if the Python Imaging Library (fork)
dev-python/pillow is already installed:
If it is not already installed, install it:
Now you can launch QtQR from the command line as follows:
Alternatively, you can create a Desktop Configuration file
qtqr.desktop with the following contents (change ‘fitzcarraldo’ to your own user name, of course):
[Desktop Entry] Categories=Graphics Comment[en_GB]=QtQR is a Qt based software that lets you generate QR Codes easily, scan an image file for a QR Code and decode it or use your webcam to scan a printed one. Comment=QtQR is a Qt based software that lets you generate QR Codes easily, scan an image file for a QR Code and decode it or use your webcam to scan a printed one. Exec=LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so PYTHONPATH=/usr/lib/python2.7/site-packages:/usr/lib/python2.7/site-packages/PIL /home/fitzcarraldo/qr-tools-1.2/qr-tools/qtqr.py GenericName[en_GB]=QtQR GenericName=QtQR Icon=/home/fitzcarraldo/qr-tools-1.2/qr-tools/icon.png MimeType= Name[en_GB]=QtQR Name=QtQR Path=/home/fitzcarraldo/qr-tools-1.2/qr-tools/ StartupNotify=true Terminal=false TerminalOptions= Type=Application X-DBUS-ServiceName= X-DBUS-StartupType= X-KDE-SubstituteUID=false X-KDE-Username=
and make it executable:
Then you can launch QtQR by double-clicking on the Desktop Configuration file.
The QtQR GUI has a feature for decoding a QR Code in an image file and for decoding a printed QR Code held in front of a Webcam. If I select ‘Decode’ > ‘Decode from Webcam’, QtQR launches ZBar and, although it is a bit fiddly, I can successfully decode a printed QR Code. However, I cannot get QtQR to decode a QR Code in an image file that QtQR itself created (or to decode a QR Code in a file created by any other application, for that matter), so there is a bug in QtQR. Looking at the application’s bug reports this appears to be Bug No. 811576. It’s not a big deal, though, because the
zbarimg command provided by ZBar can be used to decode QR Codes (see my post Installing and using ZBar in Linux to scan bar codes with your Webcam).
Linux Magazine has a good article on these and other QR Code tools: Generating QR Codes in Linux.
UPDATE (March 30, 2015): You can download an updated working revision (Revision 20) of the Python script
qrtools.py, and an updated working revision (Revision 21) of the Python script
qtqr.py, from the QtQR and QR Tools developers’ repository where they have been working on an as-yet unreleased Version 1.4 of QtQR and QR Tools:
I have briefly tested
qrtools.py Revision 20 and
qtqr.py Revision 21 with the other QR Tools Version 1.2 files I downloaded earlier. I simply downloaded the Revison 20
qrtools.py file and the Revision 21
qtqr.py file and overwrote the
qtqr.py files I had extracted earlier from
qr-tools-1.2.tar.gz into the directory
/home/fitzcarraldo/qr-tools-1.2/qr-tools/ (and made them executable). With the new
qrtools.py and new
qtqr.py it is now possible for QtQR to decode QR Codes in image files as well as QR Codes scanned via a Webcam, so the bug I mentioned above should be fixed in the next official release of QtQR/QR Tools. So you may as well skip the official Version 1.2 and download all the files from the above-mentioned developers’ repository for the future Version 1.4.