Dominique Meeùs
Dernière modification le   
retour à la table des matières — à l’index — à ma page de départ

QR code

Un code QR (QR code en anglais) 1 encode un simple texte. (Si ce texte est un URL, cela peut servir à accéder à un site web.) Pour s’en convaincre, on peut lire le contenu d’un QR code avec la commande zbarimg du paquet zbar-tools :
zbarimg imageQRcode.png donnera une réponse du type QR-Code:letexteencodé. Si on veut le texte sans le préfixe, il faut ajouter le paramètre --raw : zbarimg --raw imageQRcode.png.

On peut encoder du texte avec la commande qrencode : qrencode -s 10 -o monQRcode.png montexte.

Il faut faire des essais sur le nombre de pixels (paramètre -s 10) d’un petit carré pour avoir une dimension raisonnable selon l’utilisation. Le nombre de petits carrés (dots) dépend de la longueur du texte. Les dix pixels donnent un résultat qui me paraît raisonnable pour imprimer.

Si on a une liste de lignes de texte à encoder, on pourrait songer à demander
for x in `cat monfichierdelignes`; do qrencode -s 10 -o $x.png $x; done, mais, s’il y a (comme souvent) des URL dans les textes, ça ne marche pas à cause des signes / et : dans le texte des URL.

Ce qui marche alors c’est d’écrire la liste en CSV avec deux champs séparés par des tabulations : basename pour le nom du fichier PNG de chaque ligne et text pour le contenu. On exécute alors le script :

#!/bin/bash
while read line
do
  basename=$(cut -f1 <<< "$line")
  content=$(cut -f2 <<< "$line")
  qrencode -s 10 -o $basename.png $content
done < maliste.csv
Notes
1.
C’est un perfectionnement des codes-barres (barcodes), en codant à deux dimensions au lieu d’une. Il y a d’autres codes à deux dimensions de ce genre (dont Data Matrix et Aztec). On dit parfois QR code pour d’autres. Il semble que les compagnies de transport utilisent plus souvent le code Aztec, mais cela peut se dire code QR en langage populaire. Les codes QR se reconnaissent, entre autres, à la présence d’un carré dans trois des quatre coins, tandis que le code Aztec est construit sur un carré central.