PythonでQRコードの読み取りと作成を行ってみた
ラインやPayPayの決済、カタログやチラシなど様々な場所と用途で利用されているQRコードを利用して何か作れればと思い、QRコードについて調べてみました。
●QRコードとは
1994年(平成6年)に自動車部品メーカーであるデンソー(愛知県)の開発部門(現在は分離しデンソーウェーブ)が発明したマトリックス型二次元コードである。
「"QRコード"」『フリー百科事典 ウィキペディア日本語版』より。
"最終日付(2019年12月2日 (月) 11:08 )" UTC
URL: http://ja.wikipedia.org/
●QRコードの利用例
先ほど紹介したラインやPayPayでの決済やカタログ、チラシだけでなく名刺に企業のPRサイトへとつながるQRコードを埋め込んだり、工場などでの在庫管理の効率化などで用いられています。
QRコードの詳しい仕組みなどはこちらをご覧ください
sites.google.com
●環境
OS:Windows10
python3.7.3
PythonにはQRコードを扱うモジュールがあるのでそれを使います。
QRコードの作成
import os, qrcode # ライブラリ読み込み name = input('ファイル名 : ') #保存するQRコードのファイル名 file_name = name + '.png' print("QRコードに変換したい文字列を入力してください: ") # キーボードから変換したい文字列を入力させる qr_string = input() # QRコード画像データ生成 img = qrcode.make(qr_string) # 画像ファイルとして保存 img.save(file_name) # 現在のディレクトリ位置を取得 current_dir = os.getcwd() # 終了メッセージ出力 print("「{0}\\{1}」にQRコード画像を保存しました".format(current_dir, file_name)
クラスを用いればより詳しくQRコードを作ることができます。
import qrcode qr = qrcode.QRCode( #生成されるQRコードのバージョン version=1, #誤り訂正レベル error_correction=qrcode.constants.ERROR_CORRECT_L, #セルのサイズ box_size=10, ) qr.add_data(input()) qr.make() img=qr.make_image(fill_color="black",back_color="white) img.save('QR.png')
・引数「version」は最小が1、最大が40で、大きくすることで画像のサイズと中に入れる情報量を大きくすることができる。
・引数「error_correction」で誤り訂正レベルを設定することができる。
qrcode.constants.ERROR_CORRECT_L :約7%
qrcode.constants.ERROR_CORRECT_M:約15%
qrcode.constants.ERROR_CORRECT_Q:約25%
qrcode.constants.ERROR_CORRECT_H:約30%
・引数「box_size」でセルの大きさ(ピクセル)を設定できる
・make_imageで色の指定もできる
色指定はRGB指定
●QRコードの読み取り
from pyzbar.pyzbar import decode from PIL import Image # 画像ファイルの指定 image = input('画像ファイルの指定 : ') # QRコードの読取り data = decode(Image.open(image)) # コード内容を出力 print(data[0][0].decode('utf-8', 'ignore'))