QRコードは、Quick Response Codeの略で、1994年にデンソーウェーブ社が開発したものです。規則に従って読み込むことで埋め込まれた数字やアルファベット、URLなどを読み取ることができるツールです。QRコードは無料で商用利用が可能になっています。
QRコードには主に2つのパターンがあり、ファインダパターンとアライメントパターンです。これら2つのパターンで位置情報を補正し、白黒のbitにより埋め込まれたデータを読み取ります。
-
ファインダパターン
3つのコーナーを認識することで、シンボルの位置、大きさ、傾きを検出する。 -
アライメントパターン
アライメントパターンの中心座標を求めて、シンボルのゆがみを補正する。
qrcodeモジュールインストール
pipを使ってqrcodeモジュールをインストールします。
$ pip3 install qrcode
Pythonコード
QRcode.py
import qrcode
from PIL import Image
qr = qrcode.QRCode(
version=10, #QRコードの大きさ
# 約7%以下の誤りを訂正, ERROR_CORRECT_M:約15%以下の誤りを訂正
error_correction=qrcode.constants.ERROR_CORRECT_M, #ERROR_CORRECT_L:
box_size=2, #サイズとピクセル数
border=8 #境界線の太さ
)
qr.add_data('https://www.python.jp/')
qr.make()
_img = qr.make_image(fill_color="black", back_color="#ffffff")
_img.save('qrcode.png')
img = Image.open('qrcode.png')
img.show()
qrコマンド
qrcodeモジュールをインストールしたときに追加されるqrコマンドを使って、QRコードを表示したり画像ファイルを生成することもできます。
$ qr "Hello, world!"
█████████████████████████████
█████████████████████████████
████ ▄▄▄▄▄ ██▀█▀▄█ ▄▄▄▄▄ ████
████ █ █ █ █▄▄▄█ █ █ ████
████ █▄▄▄█ █ ▀▀▄█ █▄▄▄█ ████
████▄▄▄▄▄▄▄█ █ █▄█▄▄▄▄▄▄▄████
████▄█▄ ▄▄▀▀▄▄▄▀▀▄▄ █▀████
█████▀▀▄█▀▄▀▄▄ ▀ ▄▀█ ▄█████
████▄▄█▄▄▄▄█ ███▄▀ ▀▀██▄████
████ ▄▄▄▄▄ █▀▄ █ ▄ █▀ █████
████ █ █ █ ▄▀▄▄▄▄▀ ▀█▄▄████
████ █▄▄▄█ █▄▄ ▄ ▀▄▄▀▀ ██████
████▄▄▄▄▄▄▄█▄▄█▄██▄█▄██▄█████
█████████████████████████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
$ qr "Hello, world!" > hello.png
$ file hello.png
hello.png: PNG image data, 290 x 290, 1-bit grayscale, non-interlaced
まとめ
今回は、QRcode生成プログラムを紹介した。