直接有第三方的库:qrcode
地址:https://pypi.org/project/qrcode/
生成简单二维码是特别简单,就两步。带logo的麻烦一点,主要是要考虑logo图片的大小啥的。
安装qrcode包和PIL包
1.安装qrcode包
2.安装PIL包
如果还没有安装PIL的库,运行的时候也会报错,所以也需要安装PIL的库的;而且要用到带Logo的二维码还是要用到图片,要用到PIL的Image对象,所以还是一起安装了。
生成普通二维码
就简单的两步:
1 2 3
| qrcode.make(str):str为二维码包含的文字信息,也可以是网页链接,返回二维码对象 qrcode.save(str):将二维码以str为名保存到本地目录(注意文件的扩展名) qrcode.show():运行时展示二维码图案
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| from PIL import Image import qrcode, os
''' # pip install qrcode 二维码库 # pip install Pillow 如果报没有这个PIL库,需要安装一下 '''
def generate_qrcode(content, qcode_pic_path): img = qrcode.make(content) img.save(qcode_pic_path)
def main(): content = 'https://www.hduzn.cn/' qcode_pic_path = 'hello.png' generate_qrcode(content, qcode_pic_path)
main()
|
生成带logo的二维码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| from PIL import Image import qrcode, os
def generate_qrcode(content, qcode_pic_path): img = qrcode.make(content) img.save(qcode_pic_path)
def generate_qrcode_logo(content, logo_pic, qcode_pic_path): ''' qrcode.constants.ERROR_CORRECT_X: 1. X=L时,大约7%或更少的错误能被纠正。 2. X=M(默认)时,大约15%或更少的错误能被纠正。 3. X=Q时,25%以下的错误会被纠正。 4. X=H时,大约30%或更少的错误能被纠正。 ''' qr = qrcode.QRCode( version=5, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=8, border=4 ) qr.add_data(content) qr.make(fit=True)
img = qr.make_image() img = img.convert('RGBA') img_w, img_h = img.size factor = 4 size_w = int(img_w/factor) size_h = int(img_h/factor)
with Image.open(logo_pic) as logo: logo_w,logo_h = logo.size
if logo_w > size_w or logo_h > size_h: logo_w = size_w logo_h = size_h logo = logo.resize((logo_w, logo_h),Image.ANTIALIAS).convert('RGBA') l_w = int((img_w-logo_w)/2) l_h = int((img_h-logo_h)/2)
img.paste(logo,(l_w,l_h),logo) img.save(qcode_pic_path) img.show()
def main(): content = 'https://www.hduzn.cn/' logo_pic = '.\logo.png'
qcode_pic_path = 'hello.png' generate_qrcode_logo(content, logo_pic, qcode_pic_path)
main()
|
带logo的二维码效果如图所示: