我的git代码仓库: [https://code.aliyun.com/whjwnavy] or [https://github.com/WHJWNAVY]

Python学习:Python Qrcode

设计语言 WHJWNAVY 280℃ 0评论

利用Python qrcode库快速生成二维码

 
 

基本用法:

import qrcode
img = qrcode.make("http://www.wnavy.com/")
img.save('wnavy.png')


 
 

高级用法:

import qrcode
qr = qrcode.QRCode(        
        version=1,        
        error_correction=qrcode.constants.ERROR_CORRECT_L,        
        box_size=10,        
        border=4,
)
qr.add_data("http://www.wnavy.com/")
qr.make(fit=True)
img = qr.make_image()
img.save('wnavy.png')

 
 

解释一下:

version

一个整数,范围为1到40,表示二维码的大小(最小值是1,是个12×12的矩阵),如果想让程序自动生成,将值设置为 None 并使用 fit=True 参数即可。

error_correction

二维码的纠错范围,可以选择4个常量:

  • ERROR_CORRECT_L      7%以下的错误会被纠正
  • ERROR_CORRECT_M (default)     15%以下的错误会被纠正
  • ERROR_CORRECT_Q   25 %以下的错误会被纠正
  • ERROR_CORRECT_H.     30%以下的错误会被纠正

boxsize

每个点(方块)中的像素个数

border

二维码距图像外围边框距离,默认为4,而且相关规定最小为4

 
 

 
 

生成带有图标的二维码

二维码的容错系数(上面所指的 error_correction)越高,生成的二维码则可允许的残缺率越大,且二维码的数据主要保存在图片的四个角上,所以在二维码中间放一个小图标,对二维码的识别也是不受多大影响的。

对于插入在二维码上的图标大小,这里指定限制图标的大小尺寸最大是二维码长宽的 1/4,以免残缺太大,影响识别。

最后结合 Python 图像库(PIL)的操作,把图片黏贴(paste)在二维码图片的中间,便可以生成一个带有图标的二维码,具体操作代码如下:

from PIL import Image

import qrcode

 
 

qr = qrcode.QRCode(

    version=2,

    error_correction=qrcode.constants.ERROR_CORRECT_H,

    box_size=10,

    border=1

)

 
 

qr.add_data("http://www.wnavy.com/")

qr.make(fit=True)

 
 

img = qr.make_image()

img = img.convert("RGBA")

 
 

icon = Image.open("D:\\xiaohuang.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.ANTIALIAS)

 
 

w = int((img_w - icon_w) / 2)

h = int((img_h - icon_h) / 2)

img.paste(icon, (w, h), icon)

 
 

img.save("D:\\wnavy_xiaohuang.png")

 
 

 
 


转载请注明:胡椒小兄弟 » Python学习:Python Qrcode

喜欢 (1)or分享 (0)
发表我的评论
取消评论
表情 签到