ここでは Pure python QR Code generator を使ってみます。pip install qrcode
などとしてインストールします(pillow
も使われます)。Python ライブラリだけでなく,qr
というスクリプトもインストールされます。Mac のターミナルまたは Windows のコマンドプロンプト等で
qr '奥村晴彦です' > test.png
として全角文字のQRコードも正しく生成できます(Windows の VS Code のターミナルではうまくいかないという報告があります)。
Google Colab でもうまくいくようです。
!pip install qrcode !qr '奥村晴彦です' > test.png
これで test.png というファイルができているので左ペインからダウンロードして表示します。あるいは,Google Colab のノートブックの中に表示したいのであれば次のようにします。
from IPython.display import Image Image("test.png")
コマンドラインではなく Python だけで処理するには次のようにします:
import qrcode img = qrcode.make('奥村晴彦です') img.show() # 表示 img.save("test.png") # 保存
ほかに qrcodegen や,PyQRCode からフォークした PyQRCodeNG など,多数のQRコード生成ライブラリがあるようです。
QRコードを読むためのライブラリとして,ここでは pyzbar を使ってみます。インストールは pip install pyzbar
です。Mac ではあらかじめ brew install zbar
として zbar を入れておきます。次のような実行ファイル qrdecode.py を作っておくと便利です。パスの通ったところに置いておき qrdecode.py *.png *.jpg
などとすれば画像からQRコードを見つけて復号してくれるはずです。ファイル名を与えなければクリップボードから画像を読みます。Macなら Control + Shift + Command + 4 でQRコードを含む部分をマウスで選択してから実行します。
#! /usr/bin/env python3 import sys from pyzbar.pyzbar import decode from PIL import Image, ImageGrab def qrdecode(img): for x in decode(img): print(x.data.decode("utf-8")) if len(sys.argv) == 1: qrdecode(ImageGrab.grabclipboard()) else: for arg in sys.argv[1:]: qrdecode(Image.open(arg))
実はこれはQRコードだけでなく通常のバーコードも読めます。