Python之QRCode


一、基本介紹

介紹

  • QR Code碼是由日本於1994年9月研制的一-種矩陣二維碼符號,它具有一維條碼及其它二 維條碼所具有的信息容量大、可靠性高、可表示漢字及圖象多種文字信息、保密防偽性強等優點。

  • qrcode模塊是Github_上的一-個開源項目,提供了生成二維碼的接口。qrcode默認使用PIL庫用於生成圖像。由於生成qrcode圖片需要依賴Python的圖像庫,所以需要先安裝Python圖像庫PIL(Python Imaging Library)。

QRCode二維碼版本展示

  • QR碼符號共有40種規格,分別為版本1、版本....版本40版本1的規格為21模塊x21模塊,版本2為25模塊x25模塊,以此類推,每一版本符號比前一版本每邊增加4個模塊,直到版本40,規格為177模塊X177模塊。其中最高版本40可容納多達1850個大寫字母或2710個數字或1108個字節,或500多個漢字,比普通條碼信息容量約高幾十倍。由於其高密度編碼,信息容量大,所以被廣泛采用。

QRCode方法

qrcode.QRCode(
version=1,
error_ correction=qrcode.ERROR_ CORRECT_ _L, 
box_ size=10,
border=4,
image_ factory=None,
mask_ pattern=None)
  • 參數:
* error_ correction:控制二維碼糾錯級別。

* ERROR_ CORRECT_ _L:大約7%或者更少的錯誤會被更正。

* ERROR_ CORRECT_ _M:默認值,大約15%或者更少的錯誤會被更正。

* ERROR_ CORRECT_ Q:大約25%或者更少的錯誤會被更正。

* ERROR_ CORRECT_ H:大約30%或者更少的錯誤會被更正。

* box_ size: 控制二維碼中每個格子的像素數,默認為10。

* border:控制二維碼四周留白包含的格子數,默認為4。

* image_ factory: 選擇生成圖片的形式,默認為PIL圖像。

* mask_ pattern: 選擇生成圖片的的掩模。

常用函數

  • add_ _data(str,optimize=20):添加要轉換的文字到data參數; 如果使用了optimize優化參數,數據將被拆分為多個塊來進行優化,以找到一個長度至少為這個值的足夠簡潔的方式來生成二維碼。設置為"0”以避免優化。

  • make(fit=True):當fit參數為真或者沒有給出version參數時,將會調用best_ fit方法來找到適合數據的最小尺寸。

  • make_ image(ill color=None, back_ color=None,image_ factory=None):創建二維碼的圖像並返回,默認為PIL圖像。

二、安裝QRCode

  • 打開cmd

  按win+R兩個鍵,輸入cmd

  • 在cmd中使用pip,前提示已安裝好Python環境

  直接輸入 pip install qrcode

三、基本案例

生成普通二維碼:

源碼:

import qrcode

qr = qrcode.QRCode(
    version=5,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)

qr.add_data('https://www.cnblogs.com/nthforsth/')

qr.make(fit=True)
img = qr.make_image()
filename = 'qrcode_dome.png'
img.save(filename)
img.show()

生成帶有圖片的二維碼:

源碼:

from PIL import Image
import qrcode

qr = qrcode.QRCode(
    version=5,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
qr.add_data('https://www.cnblogs.com/nthforsth/')
qr.make(fit=True)

img = qr.make_image()
img = img.convert("RGBA")

# 添加logo,打開logo照片
icon = Image.open("C:\\Users\\hasee\\Pictures\\HTML\\tempsnip.png")

  # 獲取圖片的寬高
img_w, img_h = img.size
# 參數設置logo的大小
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

# 重新設置logo的尺寸
icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)

# 得到畫圖的x,y坐標,居中顯示
w = int((img_w - icon_w) / 2)
h = int((img_h - icon_h) / 2)
icon = icon.convert("RGBA")

# 黏貼logo照
img.paste(icon, (w, h),icon)
img.show()

四、制作動態二維碼

安裝 myqr 和 pillow

這里如果要制作動態二維碼,則需要使用myqr庫。所以先安裝。

  • 安裝步驟如上,在cmd中輸入 pip install myqr

  • 再在cmd中輸入 pip install pillow

實現

  • 結果:

  • 源碼:

# 動態的二維碼
from MyQR import myqr

myqr.run(
    words='https://www.cnblogs.com/nthforsth/p/12290779.html', # 掃描二維碼后,顯示的內容,或是跳轉的鏈接
    version=5,# 設置容錯率
    level='H',# 控制糾錯水平,范圍是L、M、Q、H,從左到右依次升高
    picture='D:\\HYLiteResources\\video\\1545149949868.gif',# 圖片所在目錄,可以是動圖
    colorized=True, # 黑白(False)還是彩色(True)
    contrast=1.0, # 用以調節圖片的對比度,1.0 表示原始圖片。默認為1.0。
    brightness=1.0, # 用來調節圖片的亮度,用法同上。
    save_name='Python.gif' # 控制輸出文件名,格式可以是 .jpg, .png ,.bmp ,.gif
)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM