{"id":8162,"date":"2013-01-07T22:41:37","date_gmt":"2013-01-08T03:41:37","guid":{"rendered":"http:\/\/scruss.com\/blog\/?p=8162"},"modified":"2013-01-08T07:59:21","modified_gmt":"2013-01-08T12:59:21","slug":"too-many-qr-codes","status":"publish","type":"post","link":"https:\/\/scruss.com\/blog\/2013\/01\/07\/too-many-qr-codes\/","title":{"rendered":"Too many QR Codes"},"content":{"rendered":"<p>I have, of late, been rather more attached to <a href=\"http:\/\/www.qrcode.com\/en\/qrgene1.html\">QR Code<\/a>s than might be healthy. I&#8217;ve been trying all sorts of sizes and input data, printing them, and seeing what camera phones can scan them. I tried three different devices to scan the codes:<\/p>\n<ul>\n<li><strong>iPhone 4s<\/strong> &#8211; 8 MP, running either i-nigma (free) or Denso Wave&#8217;s own <a href=\"http:\/\/www.denso-wave.com\/en\/adcd\/QRdeCODE\/iphone\/index.html#notes01\">QRdeCODE<\/a> ($2). QRdeCODE is better, but then, it should be, since it was created by the developer of the QR Code standard.<\/li>\n<li><strong>Nexus 7<\/strong> &#8211; 1.2 MP, running Google Goggles.<\/li>\n<li><strong>Nokia X2-01<\/strong> &#8211; <a href=\"http:\/\/c-raine.com\/\">Catherine<\/a>&#8216;s new(ish) phone, which I can&#8217;t believe only has a 0.3 MP VGA camera on it. Still, it worked for a small range of codes.<\/li>\n<\/ul>\n<p>QR Code readability is defined by the <em>module<\/em> size; that is, the number of device pixels (screen or print) that represent a single QR Code pixel. Denso Wave recommends <a href=\"http:\/\/www.qrcode.com\/en\/qrgene3.html\">that each module is made up of 4 or more dots<\/a>. I was amazed that the iPhone could read images with a module size of 1 from the screen, like this one:<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-8164\" alt=\"hello_____-ei-m01-300dpi\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/hello_____-ei-m01-300dpi.png\" width=\"684\" height=\"66\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/hello_____-ei-m01-300dpi.png 684w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/hello_____-ei-m01-300dpi-160x15.png 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/hello_____-ei-m01-300dpi-320x30.png 320w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/hello_____-ei-m01-300dpi-500x48.png 500w\" sizes=\"auto, (max-width: 684px) 100vw, 684px\" \/><\/p>\n<p>On this laptop, one pixel is about 0.24 mm. The other cameras didn&#8217;t fare so well on reading from the screen:<\/p>\n<ul>\n<li><strong>iPhone 4s<\/strong> &#8211; Min module size: 1-2 pixels (0.24-0.48 mm\/module)<\/li>\n<li><strong>Nexus 7<\/strong> &#8211; Min module size: 2-3 pixels (0.48-0.72 mm\/module)<\/li>\n<li><strong>Nokia X2-01<\/strong> &#8211; Min module size: 3-4 pixels (0.72-0.96 mm\/module)<\/li>\n<\/ul>\n<p>So I guess for screen scanning, Denso Wave&#8217;s recommendation of 4 pixels\/module will pretty much work everywhere.<\/p>\n<p>I then generated and printed a bunch of codes on a laser printer, and scanned them. The results were surprisingly similar:<\/p>\n<ul>\n<li><strong>iPhone 4s<\/strong> &#8211; Min module size: 3-4 dots (0.25-0.34 mm\/module)<\/li>\n<li><strong>Nexus 7<\/strong> &#8211; Min module size: 4-5 dots (0.34-0.42 mm\/module)<\/li>\n<li><strong>Nokia X2-01<\/strong> &#8211; Min module size: 8-9 dots (0.68-0.76 mm\/module)<\/li>\n<\/ul>\n<p>A test print on an inkjet resulted in far less impressive results. I reckon you need to make the module size around 25% bigger on an inkjet than a laser, perhaps because the inkjet is less crisp.<\/p>\n<p style=\"text-align: left;\">I have to admit I went a bit nuts with QR Codes. I made a Vcard: <a href=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/beginvcard-ec-m04-300dpi.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-8166\" alt=\"my vcard\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/beginvcard-ec-m04-300dpi.png\" width=\"720\" height=\"336\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/beginvcard-ec-m04-300dpi.png 720w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/beginvcard-ec-m04-300dpi-160x74.png 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/beginvcard-ec-m04-300dpi-320x149.png 320w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/beginvcard-ec-m04-300dpi-500x233.png 500w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>(and while I was at it, I created a new field for ham radio operators: <em>X-CALLSIGN<\/em>. Why not?). I even <a href=\"http:\/\/glaikit.org\/2013\/01\/08\/geouris-for-fun-and-profit\/\">encoded some locations in QR Codes<\/a>.<\/p>\n<p>Just to show you what <a href=\"http:\/\/fukuchi.org\/works\/qrencode\/index.html.en\">qrencode<\/a> can do, here&#8217;s a favourite piece of little prose:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8165\" alt=\"a_real_man\" src=\"http:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/a_real_man.png\" width=\"291\" height=\"291\" srcset=\"https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/a_real_man.png 291w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/a_real_man-160x160.png 160w, https:\/\/scruss.com\/wordpress\/wp-content\/uploads\/2013\/01\/a_real_man-120x120.png 120w\" sizes=\"auto, (max-width: 291px) 100vw, 291px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have, of late, been rather more attached to QR Codes than might be healthy. I&#8217;ve been trying all sorts of sizes and input data, printing them, and seeing what camera phones can scan them. I tried three different devices to scan the codes: iPhone 4s &#8211; 8 MP, running either i-nigma (free) or Denso [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7],"tags":[29,1182,2609,807],"class_list":["post-8162","post","type-post","status-publish","format-standard","hentry","category-computers-suck","tag-camera","tag-phone","tag-qrcode","tag-scan"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pQNZZ-27E","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/8162","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/comments?post=8162"}],"version-history":[{"count":7,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/8162\/revisions"}],"predecessor-version":[{"id":8171,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/posts\/8162\/revisions\/8171"}],"wp:attachment":[{"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/media?parent=8162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/categories?post=8162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scruss.com\/blog\/wp-json\/wp\/v2\/tags?post=8162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}