前回はPythonで簡単にQRコードを生成する方法を紹介しました。
イベントなどで大量のQRコードが必要になった際に、1つ1つ設定して生成するのが手間なので、大量に作れる方法を紹介します。
準備
CSVファイルを作成する
url | file_name |
https://www.google.co.jp | |
https://www.yahoo.co.jp | Yahoo! JAPAN |
https://www.bing.com | Microsoft Bing |
example.csvを元にQRコードにしたいURLとファイル名を作ってください。
ここではGoogle・Yahoo!・BingをQRコードにしたいと思います。
必要なライブラリをインストール
前回はPyQRCodeとpypngをインストールしました。
今回はさらにCSVファイルを扱うので、pandasをインストールしてください。
pip install PyQRCode
pip install pypng
pip install pandas
必要なライブラリをインポート
osは生成したQRコードを保存するディレクトリを作るために使います。
これはインストールしなくても使うことができます。
import os
import pyqrcode
import pandas as pd
生成したQRコードを保存するディレクトリを作成
予め作っておいてもいいのですが、大抵忘れてしまってエラーになってしまうので、存在しなければ自動で作成するようにします。
普通にmakedirsを使うと、既に存在する場合はエラーでるので、exist_ok=Trueを付けてあげます。
result_directory = 'result'
os.makedirs(result_directory, exist_ok=True)
QRコードを大量に生成する
CSVファイルを読み込む
pandasで作成したCSVファイルを読み込ませます。
df = pd.read_csv('example.csv')
df_records = df.to_dict(orient='records')
print(df_records)
df_recordsの中身が配列となって、CSVファイルのヘッターと値が結び付けられます。
[
{
'url': 'https://www.google.co.jp/',
'file_name': 'Google'
},
{
'url': 'https://www.yahoo.co.jp/',
'file_name': 'Yahoo! JAPAN'
},
{
'url': 'https://www.bing.com/',
'file_name': 'Microsoft Bing'
}
]
for文で生成する
df_recordsの数だけ、QRコードを生成します。
QRコードは前回の記事と同じように生成します。
for record in df_records:
url = record['url']
file_name = record['file_name'] + '.png'
save_path = f'{result_directory}/{file_name}'
code = pyqrcode.create(url, error='L', version=2, mode='binary')
code.png(save_path, scale=10, module_color=[0, 0, 0], background=[255, 255, 255])
まとめ
CSVファイルにてファイル名とURLの一覧を作ることで、大量のQRコードを生成することができました。
前回のように5行ではないですが、割と短いコードで作ることができました。