テキストを使用してQRコードを作成することは可能ですか?

テキストを使用してQRコードを作成することは可能ですか?

私が見た QR コードは主に画像ファイルです。しかし、プレーンテキストを使用して QR コードを作成することはできますか?

たとえば、ASCII と UTF-8 には文字として黒いボックスがあります。これらをスペースと組み合わせて QR コードを作成できますか?

答え1

はい!というユーティリティがありますqrencodeこれらをレンダリングできるもの。

QRコードにとって本当に重要な要素は、2D配列が「暗い" そして "軽い「ピクセル/セグメント」。色を付けることもできますが、コントラストが問題になる場合があります。

アスキー

この QR コードを読み取れるかどうかは、カメラの解像度、距離、使用しているソフトウェアによって異なります。

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

注:-t ASCIIi私の端末は白地に黒なので、(反転 ASCII) を使用しました。

ASCII QRコード

ANSI

このモードは、背景色を黒または白に設定し、いくつかのスペース文字を印刷することによって機能します。

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

ANSI QR コード

端末に書き込まれた生の文字の一部を以下に示します。これらはANSIエスケープコード. 「逃げる文字は の値を持ち0x1b、 と記述されることもあります\e

  • \e[40m背景色を黒に設定します
  • \e[47m背景色を白に設定します
  • 0x20ASCIIスペース

ANSI QRコード生

UTF-8

UTF-8モード(-t UTF8)もあります。このモードでは「ハーフブロック「 」文字を追加して密度を上げ、行数を半分に減らしました。

  • ▀ - U+2580 / 上半分のブロック
  • ▄ - U+2584 / 下半分ブロック
  • █ - U+2588 / フルブロック

@grawity からのスクリーンショット (ありがとう)

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コード

答え2

Attie さんの回答はqrencode素晴らしいのですが、何らかの理由で、バーコード スキャナー アプリでは読み取れない反転した色の QR コードが常に出力されます。

UTF-8 出力を反転するのは決して簡単なことではないから、他の人のためにここに残しておこうと思ったのです ;)

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

私はこれを使用して、UTF-8 プレーンテキスト メッセージに QR コードで暗号署名し、それを HTML で自分の Web サイトに表示します。

<pre>行間隔によって QR コードの読みやすさが HTML で損なわれることなくこれを実現するために、次のようにQR コードを CSS スタイルのブロック内に配置します。

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

実際の例については、

関連情報