É possível criar um código QR usando texto?

É possível criar um código QR usando texto?

Os códigos QR que vi são principalmente arquivos de imagem. Mas você pode criar códigos QR usando texto simples?

Por exemplo, ASCII e UTF-8 possuem caixas pretas como caracteres. Posso usá-los junto com espaços para criar um código QR?

Responder1

Sim! Existe um utilitário chamadoqrencodeque pode renderizá-los para você.

O único fator realmente importante para um código QR é que a matriz 2D tenha "mais escura" e "mais leve"pixels/segmentos. Também pode ser colorido, embora o contraste possa começar a ser um problema.

ASCII

Sua capacidade de ler este código QR provavelmente dependerá da resolução da câmera, da distância e do software que você está usando.

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

Nota: usei -t ASCIIi(ASCII invertido) porque meu terminal é branco sobre preto.

Código QR ASCII

ANSI

Este modo funciona definindo a cor de fundo como preto ou branco e imprimindo vários caracteres de espaço.

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

Código QR ANSI

Alguns dos caracteres brutos escritos no terminal são mostrados abaixo, estes sãoCódigos de escape ANSI. Um "escapar"O caractere tem um valor 0x1be muitas vezes pode ser escrito como \e.

  • \e[40mdefine a cor de fundo para preto
  • \e[47mdefine a cor de fundo para branco
  • 0x20é um espaço ASCII

Código QR ANSI bruto

UTF-8

Há também um modo UTF-8 ( -t UTF8). Este modo usa o "meio quarteirão" caracteres para aumentar a densidade e reduzir a contagem de linhas pela metade.

  • ▀ - U+2580 / Meio Bloco Superior
  • ▄ - U+2584 / Meio Bloco Inferior
  • █ - U+2588 / Bloco Completo

Captura de tela de @grawity (obrigado)

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'

Código QR UTF-8

Responder2

A resposta de Attie qrencodeé ótima, mas por algum motivo ela sempre gera um código QR com cores invertidas que meu aplicativo Barcode Scanner não consegue ler.

Inverter a saída UTF-8 dificilmente é trivial, então pensei em deixar isso aqui para outros;)

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}"

Eu uso isso para poder assinar criptograficamente uma mensagem de texto simples utf-8 com um código QR e exibi-la em meu site em HTML.

Para conseguir isso sem que o HTML prejudique a legibilidade do código QR com espaçamento entre linhas, coloquei o código QR dentro de um <pre>bloco com estilos CSS da seguinte forma:

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

Para um exemplo ao vivo, consulte

informação relacionada