Comment générer des codes QR en ligne de commandes
Ou dans des scripts
Le 23 septembre 2021 à 12h14
3 min
Internet
Internet
Désormais, les codes QR sont partout, permettant souvent de faire le lien entre un document papier et un appareil mobile. On les retrouve ainsi sur des dépliants, l'emballage de certains produits ou un passe sanitaire. Ils ont l'avantage d'être simples à générer, on peut même le faire en ligne de commandes.
Les codes QR ont été créés dans les années 90 et ont été libérés il y a plus de 20 ans par Denso Wave. Chacun peut donc en profiter. Ils sont standardisés par la norme ISO/IEC 18004:2015 et permettent d'encoder des données dans un format facilement lisible par des appareils mobiles, avec un niveau de correction d'erreur adaptable au besoin.
Le plus souvent, on les utilise pour transmettre l'URL d'un site, mais comme l'a montré le passe européen, on peut y intégrer bien plus d'informations. Il existe de nombreux services proposant de générer des codes QR simples ou plus complexes, de différentes tailles, avec ou sans personnalisation, mais aussi des librairies clé en main.
QRCode.show est l'un d'eux, avec une particularité : cet outil open source, développé en Rust, est accessible en ligne mais répond aussi à des requêtes HTTP effectuées via cURL. Il peut aussi être utilisé via l'adresse qrqr.show.
Générer un code QR en ligne de commande
Ainsi, pour générer un code QR renvoyant vers Next INpact il suffit de taper cette commande dans un terminal :
curl qrcode.show/https://www.nextinpact.com
ou
curl qrcode.show -d https://www.nextinpact.com
On peut également le faire sous la forme d'une commande « pipe » :
echo https://www.nextinpact.com | curl qrcode.show -d "@-"
Obtenir un code QR HTML, PNG, etc.
On peut exiger un résultat dans un format particulier. Il faut pour cela personnaliser le header de la requête :
curl qrcode.show -d https://www.nextinpact.com -H "Accept: image/png" --output qrcode.png
La commande ci-dessus génère une image PNG. On peut obtenir un fichier texte contenant le code QR sous la forme de caractères ou une page HTML avec le code QR et les instructions pour utiliser le service en-dessous :
curl qrcode.show -d https://www.nextinpact.com -H "Accept: text/plain" --output qrcode.txt
curl qrcode.show -d https://www.nextinpact.com -H "Accept: text/html" --output qrcode.html
Les formats reconnus sont les suivants :
application/octet-stream (par défaut)
text/plain
text/html
image/svg+xml
image/png
image/jpeg
Personnaliser la requête
D'autres paramètres permettent de retrouver les options classiques des codes QR. On peut par exemple modifier leur taille ou le niveau de compression. Par défaut il est faible (Low, L) mais peut être renforcé (M, Q, H) :
curl qrcode.show -d https://www.nextinpact.com -H "X-QR-Min-Width: 50" -H "X-QR-Min-Height: 50"
curl qrcode.show -d https://www.nextinpact.com -H "X-QR-EC-Level: H"
Il est également possible de modifier les couleurs (code hexadécimal) pour un rendu dans une page HTML :
curl qrcode.show -d https://www.nextinpact.com -H "X-QR-Dark-Color: e88228" -H "X-QR-Light-Color: 364358" -H "Accept: text/html" --output qrcode.html
La documentation détaille des scripts à intégrer dans Bash pour faciliter la création de codes QR via des commandes courtes. Le développeur indique travailler à l'ajout de paramètres, la personnalisation via un logo, le support des codes QR dynamiques, etc. Il dit également ne collecter aucune donnée personnelle.
Comment générer des codes QR en ligne de commandes
-
Générer un code QR en ligne de commande
-
Obtenir un code QR HTML, PNG, etc.
-
Personnaliser la requête
Commentaires (24)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 23/09/2021 à 12h22
intéressant :)
juste une question, l’appel à qrcode.show fait bien un appel externe ? ça permet pas de le faire en local hors ligne c’est ça ?
Le 23/09/2021 à 12h25
Je suppose que si tu clones le dépôt tu dois pouvoir le faire en local
Le 23/09/2021 à 12h39
Quelle est l’intérêt d’utiliser un webservice alors qu’on peut faire simplement apt-get install qrencode ?
Le 23/09/2021 à 12h41
De pas avoir à installer un outil, donc pas de dépendance locale ou si t’as pas APT sur ton système par exemple
Le 23/09/2021 à 13h31
you install qrencode, ça marche aussi
Le 23/09/2021 à 13h40
s/you/yum/ bien entendu
Le 23/09/2021 à 13h12
je suis pas sur que “qrencode” suit l’ISO 18004, en tout cas j’ai pas trouvé l’info
Le 23/09/2021 à 13h30
Il suffit pourtant d’aller voir sur https://fukuchi.org/works/qrencode/ :
Libqrencode supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004.
Le 23/09/2021 à 14h40
Pour dépendre d’un site random plutôt que d’un gestionnaire de paquet ou une librairie parce que c’est évidement bien plus stable
Plus sérieusement, comme dit, ça peut être pratique si on en a besoin à la volée sur un ordi qui n’est pas à nous, mais je ne l’utiliserai pas dans un script ou un programme.
Le 23/09/2021 à 12h40
:p
j’avais pas réalisé qu’on devait pouvoir faire ça en effet XD
bon doit falloir aller regarder un peu plus en détail mais ça doit être jouable en effet c’est juste qu’il ne semble pas y avoir de procédure “toute faite” pour ça :)
Le 23/09/2021 à 12h50
zut la video de Rick Astley a de la pub maintenant ? :(
Le 23/09/2021 à 21h55
tu t’es fait adsrollé !
Le 23/09/2021 à 13h15
Pour le boulot j’utilises QR-Code-generator, ça suit plus de paramètres de l’ISO 18004 (comme les masques par exemple).
En tout cas j’ajoute qrcode.show à ma watch list !
Le 23/09/2021 à 13h53
s/you/dnf
Le 23/09/2021 à 13h54
de mon côté j’utilise les QR code principalement sur mon téléphone plutôt qu’en ligne de commande https://f-droid.org/fr/packages/de.markusfisch.android.binaryeye/
Le 23/09/2021 à 15h36
Sinon, il me semble que certains navigateurs web (au moins Vivaldi) le permet nativement.
Et sinon, sur KDE (et possiblement ailleurs aussi), c’est inclut dans l’outil de presse-papier.
Le 23/09/2021 à 15h43
Le 23/09/2021 à 17h11
Je ne critiquais pas, je donnais juste l’info pour les autres ici :)
Le 23/09/2021 à 16h35
On peut générer un QR code dans libre office writer : il faut utiliser le menu
insert -> object -> QR code
(j’ai la version anglaise des menus)
Le 24/09/2021 à 08h42
Bonjour,
J’utilise de mon coté le mot clef “qrcode” dans DuckDuckGo.
Exemple : https://duckduckgo.com/?q=qrcode+https%3A%2F%2Fwww.nextinpact.com
Le 24/09/2021 à 11h43
Pas mal, c’est pratique.
Sinon dans une console avec un fond noir, qrcode.show s’affiche en blanc sur fond noir, afin d’être visible. Mon appli de scan ne reconnaissant que le noir sur fond blanc, il faut sélectionner le texte de la console pour inverser les couleurs et permettre la reconnaissance. Je suppose que d’autres applis souffrent de la même limitation.
Le 24/09/2021 à 13h52
Pas de souci avec QRDroid.
Ahah, génial
Le 24/09/2021 à 11h47
Comment avoir la météo en ligne de commande ?
curl https://wttr.in/toulouse
Le 25/09/2021 à 16h43
qrencode
pour la génération.On peut par exemple l’afficher facilement sur le terminal avec:
et bien sûr
zbar
(zxing) pour le décodage, avec la commandezbarcam
.