python 生成二维码

#!/usr/bin/env python3
import sys
import getopt
import qrcode
from PIL import Image

def generate_qr_code_with_logo(domain_name): 
 
    qr=qrcode.QRCode(
        version=2,  #version为一个整数,范围1~40,作用表示二维码的大小
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        #error_correction容错率,挡出部分二维码还能识别,越高可以挡住部分越多,但数据量增加 ,四个等级:H,L,M,Q  Q最高,可以挡住25% 
        box_size=8, #box_size 每个格子里像素大小
        border=2    #border 表示二维码距离图像外边框的距离  
        )
    qr.add_data(domain_name)
    qr.make(fit=True)
    img=qr.make_image() #创建二维码图片
    img=img.convert("RGBA") #图片转换为RGBA格式  
    icon=Image.open("./logo.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))
     
    img.save("./test.png")
 
def generate_qr_code(domain_name):
    img=qrcode.make(domain_name)
    img.save("./test.png")

def main(argv):
    print("----------------------------------------------------------------------")
    try:
        opts, args = getopt.getopt(argv, "a:f:r:m:d:")
    except getopt.GetoptError:
        print('no param marry')
        sys.exit(2)

    for opt, arg in opts:
        if opt == '-a':
            domain_name = arg
            generate_qr_code_with_logo(domain_name)
        elif opt == '-d':
            domain_name = arg
            generate_qr_code(domain_name)
            
if __name__ == "__main__":
    main(sys.argv[1:])

如果需要传递多个参数,。。。

#!/usr/bin/env python3
import sys
import getopt
import qrcode
from PIL import Image

def generate_qr_code_with_logo(dir,dataset): 
 
    qr=qrcode.QRCode(
        version=2,  #version为一个整数,范围1~40,作用表示二维码的大小
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        #error_correction容错率,挡出部分二维码还能识别,越高可以挡住部分越多,但数据量增加 ,四个等级:H,L,M,Q  Q最高,可以挡住25% 
        box_size=8, #box_size 每个格子里像素大小
        border=2    #border 表示二维码距离图像外边框的距离  
        )
    url="http://www.baidu.com/?id=" + dir
    qr.add_data(url)
    qr.make(fit=True)
    img=qr.make_image() #创建二维码图片
    img=img.convert("RGBA") #图片转换为RGBA格式  
    icon=Image.open("./logo.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))
     
    img.save("/aaa/" + dir + "/" + dataset + "/test.png")
 
def generate_qr_code(dir,dataset):
    url="http://www.baidu.com/?id=" + dir
    img=qrcode.make(url)
    img.save("/aaa/" + dir + "/" + dataset + "/test.png")

def main(argv1,argv2):
    generate_qr_code(argv1,argv2)
            
if __name__ == "__main__":
    main(sys.argv[1],sys.argv[2])
原文地址:https://www.cnblogs.com/lwmp/p/7832730.html