pythonでQRコードを作成する

タイトルの通り。python には qrcode という名前通りのパッケージが存在しており、これを使ってQRコードを作成してみる。

環境

python は anyenv + pyenv でインストールしたものを使用。

% sw_vers
ProductName:    macOS
ProductVersion: 12.6.3
BuildVersion:   21G419
% python --version
Python 3.11.3
% pip --version
pip 22.3.1 from /Users/gumfum/.anyenv/envs/pyenv/versions/3.11.3/lib/python3.11/site-packages/pip (python 3.11)

インストール

pip コマンドでインストールできる。

% pip install qrcode

使い方

qr コマンドに、QRコードを生成したい文字列を指定し、ファイルに出力する。

% qr "test" > test.png

コマンドを実行すると、以下のようなファイルが作成される。

基本的な使い方はこれだけ。

オプション

QRCode クラスを利用することで、生成するQRコードのオプションを指定することができる。

import qrcode

qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
qr.add_data('test')
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")

version で指定しているのはQRコードのバージョン番号と呼ばれるもので、大きいほど多くの情報を格納することができる。詳細はデンソーウェーブが公開している以下のページを参照。 www.qrcode.com

error_correction には誤り訂正の種類を指定する。誤り訂正の種類には4種類あり、訂正能力が高くなるほど必要なデータ量が大きくなる。こちらも詳細はデンソーウェーブが公開している以下のページを参照。 www.qrcode.com

box_size border はそれぞれQRコード内の各マスの1辺のピクセル数を指定する。デフォルトは10となっており、これより小さな値を指定することで、同じバージョン番号のQRコードであってもより小さいサイズで出力させることが可能になる。border は外周の余白のピクセル数を指定できる。デフォルトは4 となっており、指定できる最小の値になっている。

fill_color back_color はそれぞれピクセルの色、背景の色を指定ができる。black white red のようなCSSでも指定できる名前での記述のほか、16進コードで指定することもできる。

プロジェクトページのリンク

上記の他にも、グリッドの形や塗りつぶし方を変えるオプション等が用意されている。どちらも同じ内容ではあるが、GitHubの方が画像が添付されているので分かりやすそう。