python二維碼操作:QRCode和MyQR入門

python二維碼操作:QRCode和MyQR入門

python是所有程式語言中模組最豐富的

生活中常見的二維碼功能在使用python第三方庫來生成十分容易

  • 三個大矩形是定點陣圖案,用於標記二維碼的大小。這三個定點陣圖案有白邊,通過這三個矩形就可以標識一個二維碼了。

QRCode    生成這個二維碼只用一行


import qrcode
qrcode.make("不睡覺幹嘛呢").get_image().show()   #設定URL必須新增http://


安裝匯入QRCode

pip install qrcode  #方法多,體量小

安裝匯入MyQR

pip install myqr    #操作簡單,功能強大

QRCode 多種自定義方法

import qrcode
text = input("輸入文字或URL:")
img =qrcode.make(text)
img.save()                            #儲存圖片至本地目錄,可以設定路徑
img.show()    

生成新增logo的二維碼

from PIL import Image
import qrcode,os
def create_qrcode(url,qrcodename):
qr = qrcode.QRCode(
version=1,  # 設定容錯率為最高
error_correction=qrcode.ERROR_CORRECT_H, # 用於控制二維碼的錯誤糾正程度
box_size=8, # 控制二維碼中每個格子的畫素數,預設為10
border=1, # 二維碼四周留白,包含的格子數,預設為4
#image_factory=None,  儲存在模組根目錄的image資料夾下
#mask_pattern=None
)
qr.add_data(url) # QRCode.add_data(data)函式新增資料
qr.make(fit=True)  # QRCode.make(fit=True)函式生成圖片
img = qr.make_image()
img = img.convert("RGBA") # 二維碼設為彩色
logo = Image.open('xx.jpg') # 傳gif生成的二維碼也是沒有動態效果的
w , h = img.size
logo_w , logo_h = logo.size
factor = 4   # 預設logo最大設為圖片的四分之一
s_w = int(w / factor)
s_h = int(h / factor)
if logo_w > s_w or logo_h > s_h:
logo_w = s_w
logo_h = s_h
logo = logo.resize((logo_w, logo_h), Image.ANTIALIAS)
l_w = int((w - logo_w) / 2)
l_h = int((h - logo_h) / 2)
logo = logo.convert("RGBA")
img.paste(logo, (l_w, l_h), logo)
img.show()
img.save(os.getcwd() '/'   qrcodename   '.png', quality=100)


MyQR    生成動態二維碼


from MyQR import myqr
import os
myqr.run(
    words='Hello world',         #在命令後輸入連結或者句子作為引數,然後在程式的當前目錄中產生相應的二維碼圖片檔案,預設命名為” qrcode.png“
version=1,                   #設定容錯率為最高預設邊長是取決於你輸入的資訊的長度和使用的糾錯等級;而預設糾錯等級是最高階的H
level='H',                   #控制糾錯水平,範圍是L、M、Q、H,從左到右依次升高
picture='WChat.png',         #用來將QR二維碼影象與一張同目錄下的圖片相結合,產生一張黑白圖片
colorized=True,              #可以使產生的圖片由黑白(False)變為彩色(True)的
contrast=1.0,                #用以調節圖片的對比度,1.0 表示原始圖片,更小的值表示更低對比度,更大反之。預設為1.0。
brightness=1.0,              #用來調節圖片的亮度,其餘用法和取值與 -con 相同
save_name='test.png',        #控制檔名,格式可以是 .jpg, .png ,.bmp ,.gif ;
save_dir=os.getcwd()         #控制位置。
)
Positional parameter
words: str
Optional parameters
version: int, from 1 to 40
level: str, just one of ('L','M','Q','H')
picutre: str, a filename of a image
colorized: bool
constrast: float
brightness: float
預設輸出檔名是“ qrcode.png ",而預設儲存位置是當前目錄
save_name: str, the output filename like 'example.png'
save_dir: str, the output directory

參考資料

以上內容主要參考官方文件