Ist es möglich, einen QR-Code mit Text zu erstellen?

Ist es möglich, einen QR-Code mit Text zu erstellen?

Die von mir gesehenen QR-Codes sind meist Bilddateien. Aber kann man QR-Codes auch mit reinem Text erstellen?

Beispielsweise haben ASCII und UTF-8 schwarze Kästchen als Zeichen. Kann ich diese zusammen mit Leerzeichen verwenden, um einen QR-Code zu erstellen?

Antwort1

Ja! Es gibt ein Dienstprogramm namensqrencodedas diese für Sie rendern kann.

Der einzige wirklich wichtige Faktor für einen QR-Code ist, dass das 2D-Array "dunkler" Und "leichter" Pixel / Segmente. Es kann auch farbig sein, allerdings kann der Kontrast dann ein Problem darstellen.

ASCII

Ihre Fähigkeit, diesen QR-Code zu lesen, hängt wahrscheinlich von der Auflösung der Kamera, der Entfernung und der verwendeten Software ab.

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

Hinweis: Ich habe -t ASCIIi(invertiertes ASCII) verwendet, da mein Terminal weiß auf schwarz ist.

ASCII-QR-Code

ANSI

Dieser Modus funktioniert, indem die Hintergrundfarbe auf Schwarz oder Weiß eingestellt und eine Anzahl Leerzeichen gedruckt wird.

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

ANSI-QR-Code

Nachfolgend sind einige der Rohzeichen aufgeführt, die an das Terminal gesendet werden. Diese sindANSI-Escape-Codes. Ein "Flucht"-Zeichen hat einen Wert von 0x1bund kann oft als geschrieben werden \e.

  • \e[40msetzt die Hintergrundfarbe auf Schwarz
  • \e[47msetzt die Hintergrundfarbe auf Weiß
  • 0x20ist ein ASCII-Leerzeichen

ANSI-QR-Code Roh

UTF-8

Es gibt auch einen UTF-8-Modus ( -t UTF8). Dieser Modus verwendet das "halber Block"-Zeichen, um die Dichte zu erhöhen und die Zeilenanzahl zu halbieren.

  • ▀ - U+2580 / Oberer Halbblock
  • ▄ - U+2584 / Unterer Halbblock
  • █ - U+2588 / Vollblock

Screenshot von @grawity (danke)

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

Antwort2

Atties Antwort qrencodeist großartig, aber aus irgendeinem Grund wird immer ein QR-Code mit invertierten Farben ausgegeben, den meine Barcode-Scanner-App nicht lesen kann.

Das Invertieren der UTF-8-Ausgabe ist alles andere als trivial, deshalb dachte ich, ich lasse es hier für andere stehen ;)

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

Ich verwende dies, um eine UTF-8-Klartextnachricht mit einem QR-Code kryptografisch zu signieren und auf meiner Website im HTML anzuzeigen.

Um dies zu erreichen, ohne dass HTML die Lesbarkeit des QR-Codes durch den Zeilenabstand beeinträchtigt, habe ich den QR-Code <pre>wie folgt in einen Block mit CSS-Stilen eingefügt:

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

Ein Live-Beispiel finden Sie unter

verwandte Informationen