WebサイトのURL、イベントのチケット情報、アプリのダウンロードリンクなど、
さまざまな情報をスマートフォンで手軽に読み取ってもらうために、QRコードは不可欠なツールとなっています。
毎回、外部のジェネレーターサイトを使って作成したり、制限のあるツールで作業したりしていませんか?
Pythonを使えば、専用のライブラリqrcodeを導入するだけで、
好きなデータから高品質なQRコードを簡単に生成し、PNGやSVGなどの画像形式で保存できます。
これにより、デザインやサイズ、色を自由にカスタマイズしたQRコードを、必要なときに大量生産・管理できるようになります。
この記事では、Pythonを使ったQRコードの作成・保存方法について、コードの仕組みやカスタマイズのポイントを交えて詳しく解説します。
💡この記事で得られること!
- データの内容や長さに応じて最適なQRコードを自動で作成できる
- QRコードのサイズ、枠線、色を自在にカスタマイズできる
- 生成したQRコードを画像ファイル(PNG、SVGなど)として永続的に保存し、印刷物などに活用できる
- 作業の自動化に一歩踏み出せる
まずは私の実績を紹介します。
下の動画は、Pythonで自作したQR作成システムです!
👇こんな様々なコードを作成することができますよ!

QR作成や依頼・システムについて知りたい方がいればお問い合わせお待ちしております!
🛠️環境構築と準備
QRコードを生成するために、Pythonのサードパーティライブラリであるqrcodeが必要です。
【インストール】
ターミナル(コマンドプロンプトやPowerShell)で、以下のコマンドを実行してインストールします。
pip install qrcode
また、生成したQRコードをPNGなどのビットマップ画像として保存したい場合は、
画像処理ライブラリであるPillow(PIL)も一緒にインストールしておくと便利です。
pip install Pillow
実践コード:基本のQRコード作成と保存
ここでは、「GoogleのトップページURLをデータとし、それをPNG画像として保存する」基本的な例を紹介します。
import qrcode
from PIL import Image # PNG保存のためにPillowからImageをインポート
# ① QRコードに変換したいデータ(URLや文字列)を定義
data = "データ入力"
# ② QRコードのパラメーターを設定
# qrcode.QRCodeクラスのインスタンスを作成
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H, # 誤り訂正レベルを最高レベルに設定
box_size=12, # 各モジュール(小さな四角)のピクセル数
border=5, # QRコードの周囲の余白(モジュール数)
)
# ③ データをQRコードに追加
qr.add_data(data)
# データ量に応じて最適なサイズになるように自動調整
qr.make(fit=True)
# ④ 画像化して保存
# make_image()でPillowのImageオブジェクトを生成
# fill_color: モジュール(四角)の色, back_color: 背景の色
img = qr.make_image(fill_color="darkblue", back_color="lightgray")
img.save("custom_google_qr.png")
print("QRコードが 'custom_google_qr.png' として保存されました。")
#
🔑コードのポイント詳細解説
1. qrcode.QRCode()でカスタマイズする
qrcode.QRCode()コンストラクタで、QRコードの品質や見た目を決定する重要なパラメーターを設定します。
| パラメーター | 説明 | 推奨値 |
version |
QRコードのサイズや複雑度。1(最小)から40(最大)まで。Noneにするとデータ量から自動で最適なサイズが選ばれます。 |
Noneまたは1 |
error_correction |
誤り訂正レベル。QRコードの一部が汚損・破損しても読み取り可能にする機能。constants.ERROR_CORRECT_L(低)からconstants.ERROR_CORRECT_H(高)まで4段階あります。Hが最も訂正能力が高いです。 |
qrcode.constants.ERROR_CORRECT_H |
box_size |
QRコードを構成する最小単位(モジュール)のピクセルサイズ。この値を大きくするほど、生成される画像全体のサイズが大きくなります。 | 10〜20 |
border |
QRコードの周囲に必要な**白い枠(余白)**のモジュール数。JIS規格で4モジュール以上の余白が推奨されています。 | 4以上 |
2. qr.add_data()とqr.make()
qr.add_data(data): 変換したい文字列やURLをQRコードオブジェクトに追加します。qr.make(fit=True):add_dataで追加されたデータに基づいて、QRコードの構造(グリッド)を構築します。fit=Trueを指定することで、versionがNoneの場合に最適なサイズが自動で選択されます。
3. qr.make_image()とimg.save()
img = qr.make_image(...): 構築されたQRコードの構造をPillowの画像オブジェクトに変換します。fill_colorでモジュール(四角)の色を、back_colorで背景色を**カラーコード(例:#FF0000)や英語名(例:red)**で指定できます。
img.save(...): 生成された画像オブジェクトを指定したファイル名で保存します。ファイル名の拡張子(例:.png)によって保存形式が自動で決まります。
🚀さらなる応用例
この基本コードを応用することで、単一のQRコード作成に留まらない、自動化されたタスクが実現できます。
- 📰 CSV/Excelファイルからの連続生成: CSVファイルにURLリストや社員番号リストを用意し、Pythonで一行ずつ読み込んで、ファイル名を変えながらQRコードを連続で生成し、フォルダに保存する。
- 🌈 色の動的変更: QRコードの用途(例: 青は社内用、赤は顧客用)に応じて、コードを書き換えずに色を自動的に変更する。
- 🌐 SVG形式での保存:
pip install qrcode[pil,svg]でSVGバックエンドをインストールすれば、make_image()の代わりに**make_svg()を使って、印刷に最適なベクター形式(SVG)**で保存できます。
# SVG形式で保存する例
img_svg = qr.make_image(image_factory=qrcode.image.svg.SvgPathImage)
img_svg.save("vector_qr.svg")
🚨注意点
| 項目 | 説明 | 対応策 |
| 誤り訂正レベル | 訂正レベル(H、Q、M、L)を高くするほど、データ格納容量が減り、QRコードが複雑になります。データ量がギリギリの場合は、レベルを下げる検討が必要です。 | 読み取りエラーが頻発しない限りは、Hで作成するのが安全です。 |
| データ量 | データが非常に長い場合、QRコードが細かくなりすぎて、古いスマホや低解像度のカメラで読み取れなくなることがあります。 | データを短縮URLにするなど、格納データを最小限に抑える工夫をしましょう。 |
| 色とコントラスト | 背景色とモジュール(四角)の色のコントラストが低いと、読み取りエラーの原因となります。 | 黒と白など、高コントラストな色の組み合わせを基本としましょう。 |
以上が注意点です!
冒頭でも紹介しましたが、生成や依頼があれば問い合わせください!
✅まとめ
今回は、Pythonのqrcodeライブラリを使用し、QRコードを簡単に、かつ高度にカスタマイズして生成・保存する方法を詳細に解説しました。
プログラミングの知識がなくても、今回紹介したコードを少し修正するだけで、仕事やプライベートで役立つ高品質なQRコードを必要な分だけ作成できます。
■こんな方におすすめ
- 広報・マーケティングで大量のQRコードを扱う人
- 社内システムでユーザーごとのアクセスコードなどを自動生成したい人
- 作業効率化を目標とするすべての方
ぜひこの機会に、Pythonを使った自動化の世界に深く踏み込んでみてください

