New Component: Barcode_QR
Over a year ago we published an article about a Barcode_128 bar code generator component. In response to that article, some users requested a QR code generator component. QR Code (Quick Response Code) is a popular two dimensional matrix bar code that was invented by Denso in 1994. It has since become an ISO/IEC standard.
QR Code readers are freely available for iPhone, Android and other smart devices. Using a reader to read a QR Code allows information to be easily entered into the smart device without the tedium of having to use a small cramped keyboard. The information could include website URL, phone number, physical address, order, part number or contact information.
The QR code below contains the text: “http://www.swishzone.com”
Most QR readers recognize a website name and offer to open a browser window that refers to the site. If you have a mobile device with a QR code reader installed (eg. ZXing) you should be able to scan the image and then optionally browse the swishzone.com website.
QR Codes are a convenient way to publicize your website or business to mobile devices through conventional media: Posters, billboards, stickers, T-Shirts or other merchandising goods.
A QR code in a shop window is a great way for people to obtain information about your business from its mobile website if they arrive after normal business hours.
QR Codes are also a convenient way to allow the transfer the URL of a mobile specific website from a desktop computer into a mobile device.
The QR component described by this article allows users to create their own QR Codes.
The component will work with SWiSH Max4 and miniMax4 with build dates of 20110620 or later, although the component is not included with the 20110620 build’s installer, it can be downloaded here. After downloading, extract the files within the zip file to:
C:\Program Files\SWiSH Max4\Components\Utility
Note that the exact location may be different depending on where you installed Max4, or miniMax4. We intend including the component in future releases of Max4 and miniMax4. On x64 systems, Max4 and miniMax4 are by default installed into C:\Program Files (x86)\…
To use the component, drag Barcode_QR onto the stage then manually enter a string into the Parameters panel. Alternatively, use the Set_QR(s) method to create a new code using script.
The sample movie below demonstrates the use of the Set_QR(s) method. It also demonstrates how the component can be used as a mask to provide a QR code that is colored according to a color gradient. This can make your codes a little more interesting than the common black and white ones that are typically used. Using the masking method you could also use images in place of the gradient, however the image should not contain any white areas.
This is the string that is encoded into the QR code. The string can be altered using script via the Set_QR() method.
This is the color of the QR code. It should be a dark color to maximize contrast. Black is commonly chosen.
This is the background color of the QR code. A light color, generally white should be chosen. If using the component as a mask, choose 0% alpha to allow masking to work correctly.
This is the size of the code when displayed. The interpretation of this value depends on the Variable Size checkbox.
If this check box is un checked, then the QR code size is defined by the size value. ie, 250 means a 250 by 250 pixel code.
If this is checked, then the size represents the size of an individual square within the matrix. The overall matrix size is varible and is defined by the amount of data that is encoded into the QR code.
The QR code is updated to display the new string. If the string cannot be displayed because it is too long, -1 is returned.
The QR code standard defines a number of versions, different data types and error correction modes. This Method returns the version, data type and correction mode information in a number that can be interpreted as a bitmap of VVVVEECC. You will need to convert the number to binary to interpret the bit map.
Where vvvv is the version number
ee = error correction mode 0=L, 1=M, 2=Q, 3=H
cc = coding method 0=numeric, 1=alpha numeric, 2=8bit
During typical use, this method need not be used. It is only provided for those that are interested and want more information about the codes that are being created.
This method allows the remaining parameter settings to be altered using script.
The QR Standard defines a number of versions, Version 1 to Version 40. The higher the version number, the more data can be stored. The size of the matrix is implied by the version number according to the formula:
s = 17+n*4 where n is the version number.
For example: A Version 3 QR code has s=17+3*4 = 29. indicating matrix of 29 x 29.
A Version 40 QR code (177 x 177) can encode up to 2953 bytes. However, because of the size and complexity of the matrix, this code is generally not readable by mobile devices – a specialist scanner is usually required. QR code versions below 5 are generally easily read by a mobile device.
Different levels of error correction can be applied to the data before it is encoded. The specification defines 4 levels of correction: L, M, Q and H were L is the lowest level and H is the highest. As the level of correction is increased, the amount of data that can be encoded is decreased.
The specification also supports 4 different data types:
- Numeric – digits 0..9
- Alpha Numeric – Upper case A..Z, digits 0..9 and the symbols space $ % * + – . / :
- Byte – an 8 bit byte. Any ascii symbol can be encoded.
- Kanji/Kana – Japanese script characters.
The number of symbols that can be encoded into a given size matrix depends on the chosen data type. Selecting a data type that closely matches the intended data may result in a more efficient coding.
For example, using Numeric instead of the Byte data type to encode numeric data can result in better data packing and smaller bar codes.
The Barcode_QR component selects the best data type based on the entered data. Currently the Kanjii / Kana datatype is not supported. It then encodes the data using up to version 3 with M error correction. This means that the maximum number of symbols that can be encoded is shown in the table below:
|Numeric||149||Digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9|
|Alpha Numeric||61||0-9, A-Z (upper case only), space, $, %, *, +, -, ., /, :|
|Byte||42||8 bit bytes. Entire ascii character set possible|
URL names longer than the 42 character maximum can be shortened using a shorten and re-direct website such as google’s URL shortener.
If you need to print the URL that has been created, consider using the PrintJob script command.