Connexion
Abonnez-vous

Comment générer des codes QR en ligne de commandes

Ou dans des scripts

Comment générer des codes QR en ligne de commandes

Le 23 septembre 2021 à 12h14

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.

Commentaires (24)

Vous devez être abonné pour pouvoir commenter.

Abonnez-vous
votre avatar

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 ?

votre avatar

Je suppose que si tu clones le dépôt tu dois pouvoir le faire en local

votre avatar

Quelle est l’intérêt d’utiliser un webservice alors qu’on peut faire simplement apt-get install qrencode ?

votre avatar

De pas avoir à installer un outil, donc pas de dépendance locale ou si t’as pas APT sur ton système par exemple

votre avatar

you install qrencode, ça marche aussi :D

votre avatar

s/you/yum/ bien entendu

votre avatar

je suis pas sur que “qrencode” suit l’ISO 18004, en tout cas j’ai pas trouvé l’info

votre avatar

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.

votre avatar

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 :transpi:



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.

votre avatar

: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 :)

votre avatar

zut la video de Rick Astley a de la pub maintenant ? :(

votre avatar

:mdr2: tu t’es fait adsrollé !

votre avatar

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 !

votre avatar

s/you/dnf :cap:

votre avatar

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/

votre avatar

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.

votre avatar

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.


votre avatar

Je ne critiquais pas, je donnais juste l’info pour les autres ici :)

votre avatar

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)

votre avatar

Bonjour,



J’utilise de mon coté le mot clef “qrcode” dans DuckDuckGo.



Exemple : https://duckduckgo.com/?q=qrcode+https%3A%2F%2Fwww.nextinpact.com

votre avatar

NextAddict a dit:


Bonjour,



J’utilise de mon coté le mot clef “qrcode” dans DuckDuckGo.



Exemple : https://duckduckgo.com/?q=qrcode+https%3A%2F%2Fwww.nextinpact.com


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.

votre avatar

Pas de souci avec QRDroid.



Ahah, génial :mdr:

votre avatar

Comment avoir la météo en ligne de commande ?



curl https://wttr.in/toulouse

votre avatar

qrencode pour la génération.
On peut par exemple l’afficher facilement sur le terminal avec:



$ qrencode -o - -t UTF8 <<< "bonjour"


et bien sûr zbar (zxing) pour le décodage, avec la commande zbarcam.

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

Fermer