溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python二維碼操作:對(duì)QRCode和MyQR入門詳解

發(fā)布時(shí)間:2020-09-13 04:32:03 來(lái)源:腳本之家 閱讀:342 作者:不夜貓 欄目:開發(fā)技術(shù)

python是所有編程語(yǔ)言中模塊最豐富的

生活中常見的二維碼功能在使用python第三方庫(kù)來(lái)生成十分容易

python二維碼操作:對(duì)QRCode和MyQR入門詳解

三個(gè)大矩形是定位圖案,用于標(biāo)記二維碼的大小。這三個(gè)定位圖案有白邊,通過(guò)這三個(gè)矩形就可以標(biāo)識(shí)一個(gè)二維碼了。

QRCode 生成這個(gè)二維碼只用一行

import qrcode
 
qrcode.make("不睡覺(jué)干嘛呢").get_image().show()  #設(shè)置URL必須添加http://

安裝導(dǎo)入QRCode

pip install qrcode #方法多,體量小

安裝導(dǎo)入MyQR

pip install myqr  #操作簡(jiǎn)單,功能強(qiáng)大

QRCode 多種自定義方法

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

生成添加logo的二維碼

from PIL import Image
import qrcode,os
 
def create_qrcode(url,qrcodename):
  qr = qrcode.QRCode(
    version=1, # 設(shè)置容錯(cuò)率為最高
    error_correction=qrcode.ERROR_CORRECT_H, # 用于控制二維碼的錯(cuò)誤糾正程度
    box_size=8, # 控制二維碼中每個(gè)格子的像素?cái)?shù),默認(rèn)為10
    border=1, # 二維碼四周留白,包含的格子數(shù),默認(rèn)為4
    #image_factory=None, 保存在模塊根目錄的image文件夾下
    #mask_pattern=None
  )
 
  qr.add_data(url) # QRCode.add_data(data)函數(shù)添加數(shù)據(jù)
  qr.make(fit=True) # QRCode.make(fit=True)函數(shù)生成圖片
 
  img = qr.make_image()
  img = img.convert("RGBA") # 二維碼設(shè)為彩色
  logo = Image.open('xx.jpg') # 傳gif生成的二維碼也是沒(méi)有動(dòng)態(tài)效果的
 
  w , h = img.size
  logo_w , logo_h = logo.size
  factor = 4  # 默認(rèn)logo最大設(shè)為圖片的四分之一
  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 生成動(dòng)態(tài)二維碼

from MyQR import myqr
import os
myqr.run(
  words='Hello world',     #在命令后輸入鏈接或者句子作為參數(shù),然后在程序的當(dāng)前目錄中產(chǎn)生相應(yīng)的二維碼圖片文件,默認(rèn)命名為” qrcode.png“
  version=1,          #設(shè)置容錯(cuò)率為最高默認(rèn)邊長(zhǎng)是取決于你輸入的信息的長(zhǎng)度和使用的糾錯(cuò)等級(jí);而默認(rèn)糾錯(cuò)等級(jí)是最高級(jí)的H
  level='H',          #控制糾錯(cuò)水平,范圍是L、M、Q、H,從左到右依次升高
  picture='WChat.png',     #用來(lái)將QR二維碼圖像與一張同目錄下的圖片相結(jié)合,產(chǎn)生一張黑白圖片
  colorized=True,       #可以使產(chǎn)生的圖片由黑白(False)變?yōu)椴噬?True)的
  contrast=1.0,        #用以調(diào)節(jié)圖片的對(duì)比度,1.0 表示原始圖片,更小的值表示更低對(duì)比度,更大反之。默認(rèn)為1.0。
  brightness=1.0,       #用來(lái)調(diào)節(jié)圖片的亮度,其余用法和取值與 -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
  默認(rèn)輸出文件名是“ qrcode.png ",而默認(rèn)存儲(chǔ)位置是當(dāng)前目錄
  save_name: str, the output filename like 'example.png'
  save_dir: str, the output directory

參考資料

以上內(nèi)容主要參考官方文檔

這篇python二維碼操作:對(duì)QRCode和MyQR入門詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI