ga('set', 'anonymizeIp', 1);
Categories: CodingPython

[python] QR code 模組

Share

QR code在資訊爆炸的現在十分普遍,長長的一串資訊直接轉換成一張QR code。

本篇教學利用python產生您所需要的QRcode。

以下使用python3。

引用模組

import qrcode

簡易生成QRcode程式碼

img = qrcode.make('Some data here') # QRCode資訊
img.save("QRcode.png") # 儲存圖片

進階使用

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,如下。

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更有鑑別度,更吸引使用者。
範例程式如下:

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")

最後生成的結果如下:

Jys

Published by
Jys
Tags: pythonqrcode

Recent Posts

[python] Flask Create RESTful API

This article gi... Read More

3 年 前發表

[Javascript] 新增/刪除JSON中key值

在web訊息交換常會需要對JS... Read More

3 年 前發表

[JAVA] SQL Server Connection

本文介紹JAVA連線SQL s... Read More

3 年 前發表