コード
import qrcode
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
qr = qrcode.QRCode(
version=20,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=2,
border=4 # 横の幅
)
qr.add_data('test')
qr.make()
img = qr.make_image(fill_color="black", back_color="TransParent")
img_resize = img.resize(size=(350,350))
# 生成した画像をJupyter上で確認したい場合
plt.imshow(np.array(img_resize))
img_resize.save('test.png')
オンライン上のツールでQRコードをすぐに作れたりできますが、解像度などのカスタマイズが面倒なので、Pythonに解決してもらう。
調整したいときは
あたりをいじってあげる。
背景のカラー
qr.makeimageのbackcolorを変更する。
ここで、
TransParent
を指定してあげると、透過画像になる。
セルのカラー
qr.makeimageのfillcolorで指定。
セルのサイズ
qrcode.QRCode()のbox_size。
version
QRコードのバージョン(種類)は、1から40まで設定されており、それぞれのバージョン毎にセル構成(セル数)が決められています。(セルとは、QRコードを構成している四角い黒白の点のことです。)
versionを変えてあげると、情報量が変わってくる。
画像自体のサイズ変更
qrcodeライブラリの機能に含まれているのかもしれないが、Pillowのresizeを使えばOK。
img = qr.make_image(fill_color="black", back_color="TransParent")
img_resize = img.resize(size=(700,700))
コマンドラインからすぐに作成する
スクリプトとしてまとめておきます。
import argparse
import qrcode
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
# コマンドライン引数
parser = argparse.ArgumentParser()
parser.add_argument('-c', '--color', default='TransParent')
parser.add_argument('-t', '--text')
parser.add_argument('-o', '--out_name', default='./QRcode.png')
args = parser.parse_args()
qr = qrcode.QRCode(
version=20,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=2,
border=4 # 横の幅
)
qr.add_data(args.text)
qr.make()
img = qr.make_image(fill_color="black", back_color=args.color)
img_resize = img.resize(size=(350, 350))
plt.imshow(np.array(img_resize))
img_resize.save(args.out_name)
使い方
python3 qrcode_TransParent.py -t testest -o test.png
Clipyにでも登録しておけば、すぐ呼び出せて実行できます。
記事の感想をリアクションでお願いします!