私が見た 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) を使用しました。
ANSI
このモードは、背景色を黒または白に設定し、いくつかのスペース文字を印刷することによって機能します。
qrencode -t ANSI 'https://superuser.com/questions/1420001/is-it-possible-to-write-a-qr-code'
端末に書き込まれた生の文字の一部を以下に示します。これらはANSIエスケープコード. 「逃げる文字は の値を持ち0x1b
、 と記述されることもあります\e
。
\e[40m
背景色を黒に設定します\e[47m
背景色を白に設定します0x20
ASCIIスペース
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'
答え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>
実際の例については、