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

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

Abonnez-vous pour tout dévorer et ne rien manquer.

Déjà abonné ? Se connecter

Abonnez-vous

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)


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 ?


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


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


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


David_L

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


you install qrencode, ça marche aussi :D


alex.d.

you install qrencode, ça marche aussi :D


s/you/yum/ bien entendu


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


smileyn

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


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.


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.


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


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


:mdr2: tu t’es fait adsrollé !


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 !


s/you/dnf :cap:


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/


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.



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.



David_L


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.



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


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)


Bonjour,



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



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



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.


Pas de souci avec QRDroid.



Ahah, génial :mdr:


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



curl https://wttr.in/toulouse


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.


Fermer