【Pythonプロジェクト実践】アイコン付きQRコードの生成


QRコード(QRバーコード)とは、1次元バーコードに基づいて拡張された別の1次元の可読性を有するバーコードであり、白黒マトリクスパターンを用いてバイナリデータ**を表し、デバイススキャン後に含まれる情報を取得することができる.1次元バーコードの幅にはデータが記載されているが、その長さにはデータが記載されていない.QRコードの長さと幅にはデータが記載されています.2 Dバーコードには、1 Dバーコードにはない「位置決めポイント」と「フォールトトレランスメカニズム」があります.フォールトトレランス機構のように、すべてのバーコードまたはバーコードが無損であることが認識されなくても、バーコード上の情報を正確に復元することができる.QRコードの種類はいろいろありますが、機構によって開発されたQRコードは異なる構造と作成、読み取り方法を持っています.
QRコードに対するPythonの処理を以下の例で理解します.
import qrcode
from PIL import Image
import os,sys
def gen_qrcode(string, path ,logo=""):
    """
    @     logo    
    @    qrcode、PIL 
    @  string:      
    @  path:          
    @  logo:logo    
    @return:None
    """
    #         
    qr = qrcode.QRCode(
        version=2,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=8,
        border=1
    )
    qr.add_data(string)
    qr.make(fit=True)
    #   Image           RGBA
    img=qr.make_image()
    img=img.convert("RGBA")
    if logo and os.path.exists(logo):
        try:
            icon=Image,open(logo)   #  logo  
            img_w,img_h =img.size
        except Exception as e:
            print(e)
            sys.exit(1)
        factor=4
        #  logo  
        size_w=int(img_w/factor)
        size_h=int(img_h/factor)
        #       logo     
        icon_w,icon_h=icon.size 
        if icon_w>size_w:
            icon_w=size_w
        if icon_h>size_h:
            icon_h=size_h
        icon=icon.resize((icon_w,icon_h), Image.ANTIALIAS)
        #  logo   ,         
        w=int((img_w-icon_w)/2)
        h=int((img_h-icon_h)/2)
        icon=icon.convert("RGBA")
        img.paste(icon,(w, h),icon)
        #     
        img.save(path)  #   qrcode.png
if __name__="__main__":
    info=" http://www.ybu.edu.cn "
    pic_path="qrcode.png"   #          
    logo_path="logo.png"    #       
    gen_qrcode(info, pic_path,logo_path)

以上のコードから,QRコード生成とその基本的な運用を大まかに理解できるが,より創造的なコードを作るには練習を続ける必要がある.