はじめに
本記事では、Pythonのqrcodeライブラリを使用して
QRコードを作成する方法をまとめます。
1. インストール
[pil]をつけることでPillowも同時にインストールされます。
画像として保存するためにPillowが必要です。
2. 基本的な使い方
シンプルにQRコードを作成する
import qrcode
# QRコードを作成
qr = qrcode.make("https://qiita.com")
# 画像として保存
qr.save("qrcode.png")
print("QRコードを作成しました: qrcode.png")
3. 詳細設定をして作成する
import qrcode
from qrcode.constants import ERROR_CORRECT_L, ERROR_CORRECT_M, ERROR_CORRECT_Q, ERROR_CORRECT_H
qr = qrcode.QRCode(
version=1, # QRコードのサイズ(1〜40)
error_correction=ERROR_CORRECT_H, # エラー訂正レベル
box_size=10, # 1マスのピクセルサイズ
border=4, # 周囲の余白(マス数)
)
qr.add_data("https://qiita.com")
qr.make(fit=True) # データに合わせてversionを自動調整
# 色をカスタマイズして画像を生成
img = qr.make_image(
fill_color="black", # QRコードの色
back_color="white" # 背景色
)
img.save("qrcode_custom.png")
エラー訂正レベルの説明
| レベル |
定数 |
復元可能率 |
用途 |
| L |
ERROR_CORRECT_L |
約7% |
データ量を小さくしたい場合 |
| M |
ERROR_CORRECT_M |
約15% |
一般的な用途(デフォルト) |
| Q |
ERROR_CORRECT_Q |
約25% |
汚れが心配な場合 |
| H |
ERROR_CORRECT_H |
約30% |
ロゴを重ねる場合など |
4. 色をカスタマイズする
import qrcode
qr = qrcode.QRCode(version=1, box_size=10, border=4)
qr.add_data("https://qiita.com")
qr.make(fit=True)
# 色を変更(RGB形式でも指定可能)
img = qr.make_image(
fill_color="#1E3A5F", # 紺色
back_color="#F0F0F0" # 薄いグレー
)
img.save("qrcode_colored.png")
5. 複数のQRコードをまとめて作成する
import qrcode
from pathlib import Path
def create_qrcode(data: str, filename: str, box_size: int = 10) -> None:
"""QRコードを作成して保存する"""
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_M,
box_size=box_size,
border=4,
)
qr.add_data(data)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save(filename)
print(f"作成完了: {filename}")
if __name__ == "__main__":
# 出力先フォルダを作成
output_dir = Path("qrcodes")
output_dir.mkdir(exist_ok=True)
# 作成するQRコードのデータ
items = [
("https://qiita.com", "qiita.png"),
("https://github.com", "github.png"),
("TEL:090-0000-0000", "tel.png"),
("WIFI:S:MyNetwork;T:WPA;P:password;;", "wifi.png"),
]
for data, filename in items:
create_qrcode(data, str(output_dir / filename))
6. テキスト・電話番号・WiFiのQRコード
| 用途 |
データ形式 |
例 |
| URL |
そのまま |
https://example.com |
| テキスト |
そのまま |
Hello, World! |
| 電話番号 |
TEL:番号 |
TEL:090-0000-0000 |
| メール |
mailto:アドレス |
mailto:test@example.com |
| WiFi |
WIFI:S:SSID;T:WPA;P:パスワード;; |
WIFI:S:MyNet;T:WPA;P:pass;; |
まとめ
| 項目 |
内容 |
| インストール |
pip install qrcode[pil] |
| 基本作成 |
qrcode.make(データ) |
| 詳細設定 |
qrcode.QRCode()でカスタマイズ |
| 色変更 |
make_image(fill_color, back_color) |
| サイズ調整 |
box_sizeとborderで調整 |