1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでQRコードを作成しよう!初心者向けPyQRCode徹底入門

Posted at

はじめに

近年、QRコードは商品やイベント、Webサイトへの入り口として、日常のあらゆる場所で目にするようになりました。その作成方法はさまざまですが、プログラミング未経験者にとっても、Pythonを使えば簡単にQRコードを生成できます。このブログでは、Pythonの「PyQRCode」ライブラリを使い、QRコードの基礎から応用まで段階的に解説します。WindowsやMac、Ubuntuなど複数の環境で動く実用的なコードを随所に紹介するので、ぜひQRコード作成を手元で体験してみましょう。


Chapter 1: PyQRCodeのインストール

PyQRCodeはpipコマンドで簡単にインストールできます。まずはPythonの環境が整っていることを確認し、以下のコマンドを実行しましょう。

# コマンドラインで実行
pip install pyqrcode

Chapter 2: 初めてのQRコード生成

PyQRCodeを使えば、たった数行のコードでQRコードが作れます。まずは、文字やURLをQRコードとして生成してみましょう。

import pyqrcode

url = pyqrcode.create('https://www.python.org/')
url.svg('python_qr.svg', scale=8)

このコードは「python_qr.svg」というファイルにQRコード画像を保存します。SVG形式なので拡大しても劣化しません。


Chapter 3: テキストQRコードの作成

文字列(日本語も含む)をQRコードにできます。好きなメッセージをQRコード化してみましょう。

import pyqrcode

message = pyqrcode.create('こんにちは、PythonとQRコード!')
message.png('message_qr.png', scale=6)

PNG形式で保存できるので、さまざまな用途に活用できます。


Chapter 4: QRコードのSVG保存

PyQRCodeは特にSVGでの保存が得意です。高品質なベクター画像として使いたい場合はSVGを選択しましょう。

import pyqrcode

data = pyqrcode.create('SVG形式のQRコードです')
data.svg('svg_sample.svg', scale=10)

Chapter 5: 複数データのQRコード生成

一度に複数のQRコードを自動で生成する場合、forループを活用しましょう。リストを使い複数のURLをQR化します。

import pyqrcode

urls = ['https://yahoo.co.jp', 'https://google.co.jp', 'https://github.com']
for i, url in enumerate(urls):
    qr = pyqrcode.create(url)
    qr.png(f'qr_{i}.png', scale=5)

Chapter 6: QRコードのサイズを変更

scale引数でQRコード画像のサイズ調整が可能です。用途に合わせて適切なサイズで保存しましょう。

import pyqrcode

qr = pyqrcode.create('サイズを変えてみよう')
qr.png('small_qr.png', scale=2)
qr.png('large_qr.png', scale=10)

Chapter 7: エラーレベルの設定

QRコードには復元能力を示すエラーレベル設定があり、PyQRCodeはそれにも対応しています。次のように使います。

import pyqrcode

data = pyqrcode.create('エラーレベル設定', error='H')
data.png('error_qr.png', scale=6)

Chapter 8: 日本語QRコードの扱い

日本語はUTF-8でエンコードされている必要があります。PyQRCodeはそのまま日本語のテキストを問題なくQR化できるので便利です。

import pyqrcode

jp_text = pyqrcode.create('横浜とカナガワでPythonを学ぶ')
jp_text.png('yokohama_qr.png', scale=8)

Chapter 9: カスタムパスで保存

生成したQRコードは好きな場所に保存できます。ファイルの保存先パスを指定してみましょう。

import pyqrcode
import os

save_path = os.path.join('output', 'custom_qr.png')
qr = pyqrcode.create('保存先をカスタム')
qr.png(save_path, scale=6)

Chapter 10: QRコードをPythonで表示

作成したQRコード画像を、Pythonコード経由で表示するにはPillowライブラリを使う方法が便利です。

import pyqrcode
from PIL import Image

qr = pyqrcode.create('表示テスト')
qr.png('show_qr.png', scale=6)
img = Image.open('show_qr.png')
img.show()

Chapter 11: コマンドラインでのQR生成

スクリプトを作れば、コマンドライン引数で自由な内容のQRコードをさくっと生成できます。

import sys
import pyqrcode

if len(sys.argv) > 1:
    content = sys.argv[1]
    qr = pyqrcode.create(content)
    qr.png('cli_qr.png', scale=6)

端末で python thisscript.py 好きなテキスト と打つとQRコードができ上がります。


Chapter 12: QRコード画像の拡張子変更

SVG以外にもPNGを活用したい場合は、pngメソッドで保存します。必要に応じて拡張子を変更しましょう。

import pyqrcode

data = pyqrcode.create('拡張子を選ぼう')
data.png('ext_qr.png', scale=6)

Chapter 13: ファイルの存在チェック

生成したファイルが確実にあるか確認するには、os.pathモジュールでチェックできます。

import pyqrcode
import os

filename = 'check_qr.png'
qr = pyqrcode.create('ファイルチェック')
qr.png(filename, scale=6)
print(os.path.exists(filename))

Chapter 14: QRコードのバイナリデータ取得

ファイル保存せず、画像データそのものを取得したい場合はStringIOを使います。Webアプリで活用できるテクニックです。

import pyqrcode
from io import BytesIO

qr = pyqrcode.create('バイナリデータ取得')
buffer = BytesIO()
qr.png(buffer, scale=4)
data = buffer.getvalue()
print(type(data))  # <class 'bytes'>

Chapter 15: QRコード付きWebページ自動生成

flaskなどのWebフレームワークと連携して、動的にQRコード画像を返すWebシステムも作れます。

from flask import Flask, send_file, request
import pyqrcode
from io import BytesIO

app = Flask(__name__)

@app.route('/qr')
def generate_qr():
    text = request.args.get('text', 'デフォルトのQRコード')
    qr = pyqrcode.create(text)
    buffer = BytesIO()
    qr.png(buffer, scale=8)
    buffer.seek(0)
    return send_file(buffer, mimetype='image/png')

if __name__ == '__main__':
    app.run(debug=True)

まとめ

このブログ記事で、PyQRCodeによるPythonプログラミングを通して、QRコード生成の基本から応用までを体系的に解説しました。どの章も実際に動くサンプルコードとともに、初心者が扱いやすい内容になるよう工夫しています。QRコードはビジネスでも日常でも活用できる便利な技術です。自分で手を動かし、「コードからQRコード」が作れる体験をぜひ味わってください。本記事が、PythonとQRコード開発の第一歩になれば幸いです。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?