Pour ceux qui ne connaissent pas les QR Codes, c’est nouveau code barre en 2D qui permet par exemple de partager des liens internet, mais encore beaucoup d’autres informations (position géographique, texte…). Ces QR Code sont utilisés sur les smartphones, ils sont lus grâce à l’appareil photo de votre mobile.
Générer un QR Code est très simple, beaucoup de sites et d’applications mobiles (Android et iPhone) le font à votre place. Mais…
Il y a peu de temps, je suis tombé sur cet article, qui explique comment et pourquoi on peut mettre un logo personnalisé dans un QR Code.
Comment est-ce possible ?
Cela vient du fonctionnement même du QR code. C’est une matrice de petits carrés noirs et blancs. Et dans cette matrice, il y a une certaine quantité d’erreurs qui peuvent être corrigées, le maximum d’erreurs possibles étant de 30%. 30% représente une assez grande partie d’un QR Code.
Il est donc possible de volontairement foirer une partie égale ou inférieure à ce pourcentage. Et par foirer, je veux dire bien entendu mettre ce que l’on veut, par exemple coller un logo par dessus. 😉
Pour plus d’infos, il y a bien évidemment l’article de Wikipedia. 🙂
Fonctionnement
Le QR code se décompose en plusieurs parties distinctes. Certaines doivent rester intactes, les autres, on s’en fout !
Voici la représentation d’un QR code version 6. Sur ce schéma, les zones blanches représentes les zones à laisser intactes. Les couleurs représentes un bloc de 1 byte (formé par 8 petits carrés blancs ou noirs). Les traits noirs relient ensemble les blocs qui sont divisés en deux parties.
Il y a 172 zones de 8 pixels. 30% d’erreur signifie donc que l’ont peut à peu près recouvrir 51 zones. Ce qui fait déjà une assez bonne partie.
Ce qui reste à faire ? C’est très simple, il faut faire son ptit dessin, le mettre au dessus de ce schéma et regarder s’il recouvre 51 zones, et pas une de plus. Il ne faut pas oublier non plus qu’une zone en partie recouverte compte pour une zone recouverte complètement.
La pratique
Voici un petit exemple concret. Prenons par exemple… le logo space invaders de ce ptit blog. On le superpose avec le shéma et ça donne ça :
Nickel, on n’écrase que 42 zones.
Attention : le logo doit être entouré de blanc pour éviter tout croisement avec d’autres pixels noirs. Je ne suis pas sûr à 100% de cette règle mais il vaut mieux éviter les problèmes 😉
On va alors créer un QR code, par exemple sur ce site. N’oubliez pas de choisir V6 en version et 30% de “Error correction level“.
Là il ne faut juste pas se planter, parce que le schéma ci-dessus est plus grand que le QR code généré. Il faut donc bien retaillé le logo en conséquence.
Le résultat est là :
Et bien entendu, ça fonctionne ! 🙂
J’ai ici gardé l’effet pixelisé en prenant des pixels de la même taille pour le space invader. Mais rien ne vous oblige à faire ça.
D’ailleurs, en voilà un autre qui fonctionne tout autant.
Fin
A vous de jouer maintenant ! 😉
Sinon pour intégrer facilement un logo certains générateur permettent de le faire facilement : http://www.unitag.fr/qrcode
La règle du contour blanc autour du logo n’est pas une obligation, ce qui compte est de ne pas dépasser 30% (ou moins si la redondance est moindre) de la surface et de ne pas toucher à certaines surfaces (surtout les yeux !)