Drawing on the QR code
Before drawing an image on the QR code, and after finding a good location for the image – we must take some measures to assure that our final result will be still decodable.
The fact that you can read the QR code at your laboratory does not guarantee that it will be decodable out there. Some factors might reduce the readability of your QR code when it is in public use; here are some points to consider:
1. Is it going to be printed on a curved surface (like bottles)?
Curvature reduces QR code readability since it will not render as a perfect square in camera.
2. Is it going to be exposed in a street?
If so print it large as possible, bird drops and other stains must not cover too much data.
3. Is it going to be printed on a shiny object, or behind a glass?
Shiny objects will draw bright ray lights on the QR code, reducing by this its readability.
4. Is it going to be printed for in house reading?
Poor lighting condition might hinder code readability, as well as folds in paper.
5. Is it intended to be read at night?
Flash devices might flood the image with light and some dark modules might appear bright – again affecting readability.
6. Is it going to be on a T-shirt?
Natural folds on the shirt will turn it a nightmare for every barcode reader.
7. Is it going to be scanned from computer screen – or worse from TV?
TV and computer screens tend to add patterns (resulting from screen refresh rate) to the camera image.
8. Is it intended to be read from far? Is it going to be posed high above people heads?Distance will cause QR code image to be small (in camera image pixels) – which again reduces readability.
By the way there is a connection between physical size of QR code and good scanning distance. The ratio limit is around of 1/10 between QR code size and your distance from it. It means that if the QR code height is 1 meter, you should expect average readers to read it from distance of 10 meters – not more!
Also check your code under poor lights conditions with camera flash and see whether it should be bigger, to enable more distance between QR code and scanning device. The more distance you have between the QR code and the flash, the less area of QR code will be overflowed by the flash light.
Well, looking at this partial list is enough to put some designers in despair, giving away the whole idea of putting an image on a QR code. But, no need to be desperate, we have plenty of room and all we have to do is leave some of it for these hazards. So if you use a QR code with a 30% error correction do not use the whole 30%, deduct always from your playground another 7- 10% for tolerating the potential damage from the factors listed above.
Why 7-10% should be enough? This is a tough question. I heard some people saying that you should leave 20% as a safety zone. Well the reason I chose 7-10% is empirical. Most QR code generator today, creates Low error correction QR codes (7%). These codes work quite well in normal environments. Of course if you happen to know that your code will have to rest on an especially difficult surface – like on a curved shiny can or on a lamp post in the street – give it more space, go toward the 20% limit or even do not draw on it at all. You can always color it, smooth its corners and add other effects.
Here is a simple rule for estimating how much modules your rectangular canvas actually corrupt, without knowing where the specific data unit borders are. Take the length of the horizontal edge of your canvas in modules and multiply it by 4. Add this amount of modules to your rectangle area – this is a good estimation for the actual data area (in modules) you are going to corrupt.
Why is this?
The number of units the horizontal edge of your canvas crosses is half of its length in modules. That’s because every QR code data unit is two modules wide. Because of the jigsaw pattern every second unit will be cut – meaning that you are corrupting an additional unit every four modules. So you have to add an amount of units equal to a quarter of your modules width, for every horizontal edge. Assuming that the vertical edge is on an even module (no additional noise here), you have to add the other horizontal edge that adds another quarter. Every corrupted unit adds eight corrupted modules – so you have to add – half of edge length in modules multiplied by eight modules – which is equivalent to edge length multiplied by four modules (horizontal edge of course).
The Low error correction QR codes are not the ones to be used for drawing. The whole permitted area for corruption (7%) is in the range of the needed 7-10% safety zone. Do not put images on Low error correction barcodes! They will not decode.
Here are two examples for our version 3, high error correction (30%) QR code.
Using 10×10 modules area for image does using 8×8 modules leaves full of room
not leave room for additional corruption for additional corruption
As you can see the overall effect is very similar, although the left one uses 17% from total data area (10×10 modules from 567) and might actually corrupt 24% of data area (10×4 = 40 modules are around additional 7% of data area). This leaves only 6% for safety zone – not enough. The other one to the right covers 11% of total data (8×8 modules) area which may reach 17% of corrupted area (8×4=32 – less than 6% of data area). Add this to 7-10% for safety zone and you are still below the permitted 30% data area.
The visual impact both QR codes leaves in mind is very similar. I am not sure that I am able to say which is which if every one of them is shown to me separately, after an hour interval.
Note that I positioned the drawing area to start at a vertical even module from the right. It is actually far 10 modules from the right edge of the QR code. Putting the canvas right side with an even module distance from the right size of the QR code, will always harm less units than putting it one module aside. This will always make your QR code more readable.
That’s it for today. Looking for a variety of QR codes I intend to look into QR code generators and see what they provide. I am going to look into the mask and error correction level of the created codes, and also search after interesting features. If any of you would like to know which kind of codes his favorite QR generator creates, please point them to me and I will add them to my test list.