I appreciate the steps, but this fails to answer a question which, imho, is way too often omitted in tech tutorials, and that’s ”Why?”.<p>Sure, I understand these are just the steps to create a QR code and I could just Google why the QR code needs a masking pattern, but that’s besides the point. A good material would explain why I need it, instead of just saying it should be done. Even one sentence would be sufficient.
During quarantine I designed a paper-based system for making QR codes by hand. Everything is very papery and bureaucratic, but also fun. Tables to look up bytes, long forms for calculating Reed-Solomon, and even transparent sheets of paper for comparing different masking patterns.<p>My goal is to film a video of generating a QR code without any computers or even calculators. It's possible, just might take two hours or so.
I found this video to be a lot clearer and with the combination of the website makes understanding easier: <a href="https://www.youtube.com/watch?v=KA8hDldvfv0" rel="nofollow">https://www.youtube.com/watch?v=KA8hDldvfv0</a>
Though QR codes are very interesting technically, they were designed to be used by devices with orders of magnitude less computational power than is currently the norm, and much lower resolution optics as well. This is a good thing from an error-prevention perspective, but I wonder if a more modern QR code could be designed for today's smartphones.<p>I think an interesting new standard would take advantage of higher resolution cameras and OCR functionality to make data transparent to the consumer. I personally wonder what the hell is going to pop up on my phone every time I use a QR code... Text? URL? Link to an app store? Who knows. A standard which marks text as "data" would let a user know what they're saving, and let them point a camera in the general direction of some text, and all the relevant info be extracted and organized. (Think addresses, receipts, etc.) I already use my phone to remember lots of things - like I take a picture of the back of my DSL router for the access codes printed there, or take a picture of my bike tire to remember the size of the tube I need, etc.<p>Or if transparency isn't important, given we have 4K cameras now, imagine if there was a popular standard using steganography! I can imagine movie posters having showtimes, director and actor info, URLs for streaming it online, etc. all baked into the image.
Seven years ago I had the wildest ideas of creating photo realistic QR's. Sadly, I got pulled away to other projects with higher priority. The unanimous advice given to me at that time was to hold publishing so I could exploit it financially. Until today neither of both have changed.<p>I'm not going to let it catch more dust and decided to open-source it under Affero license.<p>Creating a photo realistic QR requires two steps. The first is to create a 93x93 dithered monochrome image. The dithering is calculated to preserve the mandatory QR framework/timing bits and generating the CRC.<p>The second step is adding colour information as a 186x186 dithered layer. The colour palette is created using Spacial Colour Quantification which uses the 93x93 QR image as constraints on the available colour range.<p>SCQ also stabilises palettes used for animations (a service not made available on the site).<p>During the years the site has been prone to bitrot. I managed to recover most of the missing parts parts from backups. Most of the functionality has been restored and I'm still working with higher priority projects.<p>[0] <a href="https://www.qrpicture.com" rel="nofollow">https://www.qrpicture.com</a>
[1] <a href="https://github.com/xyzzy/qrpicture" rel="nofollow">https://github.com/xyzzy/qrpicture</a>
For those interested in the creation of the QR code.
Japanese TV Station NHK World have a 15 minute documentary charting it's creation -
<a href="https://www3.nhk.or.jp/nhkworld/en/ondemand/video/2072031/" rel="nofollow">https://www3.nhk.or.jp/nhkworld/en/ondemand/video/2072031/</a><p>It also features interesting details such as how they figured out the ratio of the marker squares should be.
This was a good exploration of your approach. The interactive usage inline with description was very helpful. As some have pointed out, some expansion in certain areas could improve it, but still good.<p>As a side note, I'm looking into using your libraries. They do seem fairly solid and efficient.<p>Thanks for putting this out there!
An artisanal QR code goes over the error correcting code by manually calculating the long division: <a href="https://www.quaxio.com/an_artisanal_qr_code.html" rel="nofollow">https://www.quaxio.com/an_artisanal_qr_code.html</a>
This is a great resource. I used it along with another practical tutorial (<a href="https://www.thonky.com/qr-code-tutorial/" rel="nofollow">https://www.thonky.com/qr-code-tutorial/</a>) to complement the official QR code standard when I wrote my own QR code encoder in Common Lisp: <a href="https://github.com/mare5x/LispQR" rel="nofollow">https://github.com/mare5x/LispQR</a>
Along similar lines is there any guides on making more artful QR codes? I've seen ones that aren't square but still scan and found them fascinating.
>The math behind computing the Reed-Solomon error correction codes is omitted because it is long, tedious, and not very interesting.<p>LOL! That's probably the most difficult part of creating a QR code, the rest is just framing/padding the data which is pretty obvious.
... or you could just use an "Oh By" code.[1]<p>No app, no reader, and you can just chalk/write/scratch it anywhere you like.<p>This message, for instance, is at: 0xH6VYP7 [2]<p>[1] <a href="https://0x.co/" rel="nofollow">https://0x.co/</a><p>[2] <a href="https://0x.co/H6VYP7" rel="nofollow">https://0x.co/H6VYP7</a>