QR code在資訊爆炸的現在十分普遍,長長的一串資訊直接轉換成一張QR code。
本篇教學利用python產生您所需要的QRcode。
以下使用python3。
引用模組
1 |
import qrcode |
簡易生成QRcode程式碼
1 2 |
img = qrcode.make('Some data here') # QRCode資訊 img.save("QRcode.png") # 儲存圖片 |
進階使用
1 2 3 4 5 6 |
qr = qrcode.QRCode(version = 3, error_correction = qrcode.constants.ERROR_CORRECT_H, box_size = 3,border = 4) qr.add_data('Some data here') qr.make(fit = True) img = qr.make_image() img.save("QRcode.png") |
說明
arcade.make(”)中帶的就是QR code中所要帶的資訊,可以是文字、數字、或是一串網址等。
qrcode.QRcode()中有幾個參數,分別介紹如下:
1. version: 一個1~40的整數,用來控制QR code的尺寸。最小的尺寸為一個21×21格的矩陣。若設定為None且make函數之fit參數為True時,將自動決定QR code的尺寸。
2. error_correction: 錯誤碼糾正程度,影響了QR code若被污損造成難以辨識,能自動修復的比例。有四種程度可調整,分別為ERROR_CORRECT_L(7%可被修正)、ERROR_CORRECTION_M(15%可被修正)、ERROR_CORRECTION_Q(25%可被修正)、ERROR_CORRECTION_H(30%可被修正),越大的修正程度將會佔用更多的資料空間。
3. box_size: 控制每個格子的像素數量,預設為10。
4. border: 控制邊框包含的格子數量,預設為4,是標準規定的最小值。
5. image_factory: 用來控制生成的QR code圖檔型別。
改變色彩
當然,模組中也支援產生色彩不同的QR code,如下。
1 2 3 4 5 6 7 8 9 10 11 |
qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4, ) qr.add_data('Some data here') qr.make(fit=True) img = qr.make_image(fill_color="blue", back_color="yellow") img.save('QRcode.png') |
這樣就會生成藍前景黃背景的QR code,這邊要提醒注意,背景與前景色調需鮮明,否則將影響辨識速度和成功率。
在QR code中放入圖片
這是一個特殊功能,能讓生成之QR code更有鑑別度,更吸引使用者。
範例程式如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import qrcode from PIL import Image qr = qrcode.QRCode(version = 3, error_correction = qrcode.constants.ERROR_CORRECT_H, box_size = 3,border = 4) qr.add_data('Some data here') qr.make(fit = True) img = qr.make_image() img = img.convert('RGBA') # 設定色彩 img = qr.make_image(fill_color="blue", back_color="yellow") # 讀取客製化圖片以嵌入QR code中 icon = Image.open('./greenLight.png') img_w, img_h = img.size factor = 4 size_w = int(img_w/factor) size_h = int(img_h/factor) 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.NEAREST) 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("logoQR1.png") |
最後生成的結果如下:
留言