125 votes

Est-il possible de créer un code QR en utilisant du texte ?

Les codes QR que j'ai vus sont principalement des fichiers d'images. Mais est-il possible de créer des codes QR en utilisant du texte brut ?

Par exemple, ASCII et UTF-8 ont des boîtes noires comme caractères. Puis-je les utiliser avec des espaces pour créer un code QR ?

182voto

Attie Points 18031

Oui ! Il existe un utilitaire appelé qrencode qui peuvent les rendre pour vous.

Le seul facteur vraiment important pour un code QR est que le tableau 2D a " plus sombre " et " plus léger "pixels / segments. Il peut également être coloré, mais le contraste peut commencer à poser problème.

ASCII

Votre capacité à lire ce code QR dépendra probablement de la résolution de l'appareil photo, de la distance et du logiciel que vous utilisez.

qrencode -t ASCIIi 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'

Note : J'ai utilisé -t ASCIIi (ASCII inversé) parce que mon terminal est blanc sur noir.

ASCII QR Code

ANSI

Ce mode fonctionne en réglant la couleur de fond sur le noir ou le blanc et en imprimant un certain nombre de caractères d'espacement.

qrencode -t ANSI 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'

ANSI QR Code

Certains des caractères bruts écrits sur le terminal sont présentés ci-dessous, il s'agit de Codes d'échappement ANSI . An " s'échapper Le caractère " " a une valeur de 0x1b et peut souvent s'écrire comme \e .

  • \e[40m définit la couleur de fond en noir
  • \e[47m définit la couleur de fond en blanc
  • 0x20 est un espace ASCII

ANSI QR Code Raw

UTF-8

Il existe également un mode UTF-8 ( -t UTF8 ). Ce mode utilise la fonction " demi-bloc "pour augmenter la densité et réduire de moitié le nombre de lignes.

  • - U+2580 / Demi-bloc supérieur
  • - U+2584 / Demi-bloc inférieur
  • - U+2588 / Bloc complet

Capture d'écran de @grawity (merci)

qrencode -t UTF8 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'
qrencode -t ANSIUTF8 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'

UTF-8 QR Code

0voto

tonoslfx Points 1711

Réponse d'Attie avec qrencode est génial, mais pour une raison quelconque, il produit toujours un code QR avec des couleurs inversées que mon application Barcode Scanner ne peut pas lire.

Inverser la sortie UTF-8 est loin d'être trivial, alors j'ai pensé le laisser ici pour les autres ;)

qrencode=`qrencode -t UTF8  "https://superuser.com/q/1420001/551559"`
echo "${qrencode}"

# replace black
qrencode=$(echo "${qrencode}" | sed s/`echo -e '\xe2\x96\x88'`/A/g)
echo "${qrencode}"

# replace white
qrencode=$(echo "${qrencode}" | sed s/\ /B/g)
echo "${qrencode}"

# swap black for white
qrencode=$(echo "${qrencode}" | sed s/A/\ /g)
echo "${qrencode}"

# swap white for black
qrencode=$(echo "${qrencode}" | sed s/B/`echo -e '\xe2\x96\x88'`/g)
echo "${qrencode}"

# replace "Upper Half Block"
qrencode=$(echo "${qrencode}" | sed s/`echo -e '\xe2\x96\x80'`/A/g)
echo "${qrencode}"

# replace "Lower Half Block"
qrencode=$(echo "${qrencode}" | sed s/`echo -e '\xe2\x96\x84'`/B/g)
echo "${qrencode}"

# swap upper for lower
qrencode=$(echo "${qrencode}" | sed s/A/`echo -e '\xe2\x96\x84'`/g)
echo "${qrencode}"

# swap lower for upper
qrencode=$(echo "${qrencode}" | sed s/B/`echo -e '\xe2\x96\x80'`/g)
echo "${qrencode}"

Je l'utilise pour pouvoir signer cryptographiquement un message en clair utf-8 avec un code QR et l'afficher sur mon site web en html.

Pour y parvenir sans que le html ne casse la lisibilité du code qr avec l'espacement des lignes, j'ai placé le code qr à l'intérieur d'une balise <pre> avec des styles css comme suit :

<pre style="line-height:1em; letter-spacing: -1px; font-size: x-large;">
...
</pre>

Pour un exemple concret, voir

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X