使用python的qrcode包。
安装
pip install qrcode[pil] --user
命令行使用
qr "你的名字" > test.png
脚本中使用
import qrcode
img = qrcode.make("你的名字")
#保存方法1
with open("a.png", "wb") as f:
img.save(f)
#保存方法2
img.save("b.png")
qr = qrcode.QRCode(
version = 1, #None(default),自动调整大小
error_correction = qrcode.constants.ERROR_CORRECT_L,
box_size = 10, # 用默认吧。每个方块中像素的个数
border = 5,) # border是二维码与图像外围边框的距离,默认是4,且规定最小为4
qr.add_data('你的名字') #添加数据
# add_data(str, optimize=20) optimize设置为0可以避免优化。
qr.make(fit=True)
# 如果前面没有给出version,或者fit=True就会自动调大小;
# 如果没有设置mask_pattern,就会调用best_mask_pattern找合适的mask。
img = qr.make_image(fill_color="blue",back_color="white")
# 默认返回PIL图像。不指定颜色的话,默认黑白。
img.save("a.png")
# 如果:img = qr.make_image(image_factory=qrcode.image.svg.SvgImage) # 生成svg文件
# 保存时save成*.svg即可
error_correction的四个常量
名称 | 含义 |
---|---|
qrcode.constants.ERROR_CORRECT_L | 7%以下的错误会被纠正 |
qrcode.constants.ERROR_CORRECT_M | 15%以下的错误会被纠正(default) |
qrcode.constants.ERROR_CORRECT_Q | 25% |
qrcode.constants.ERROR_CORRECT_H | 3% |
完整案例
import qrcode
import qrcode.image.svg
from PIL import Image
def getQRcode(data, file_name, logo_file_name=None):
qr = qrcode.QRCode(
#version=1, # None(default),自动调整大小
error_correction=qrcode.constants.ERROR_CORRECT_Q,
#box_size=5,
border=4,
)
qr.add_data(data)
qr.make(fit=True) # 二维码自动调整大小
#img = qr.make_image(fill_color="black", back_color="white")
#img = qr.make_image(image_factory=qrcode.image.svg.SvgImage) # 生成svg文件
img = qr.make_image()
if logo_file_name != None:
# 插入logo
logo = Image.open(logo_file_name)
# size of qr-code
img_w, img_h = img.size
# set size of logo
factor = 8
size_w = int(img_w / factor)
size_h = int(img_h / factor)
logo_w, logo_h = logo.size
if logo_w > size_w:
logo_w = size_w
if logo_h > size_h:
logo_h = size_h
logo = logo.resize((logo_w, logo_h), Image.ANTIALIAS)
x = int((img_w - logo_w) / 2)
y = int((img_h - logo_h) / 2)
img.paste(logo, (x, y))
#plt.imshow(img)
#plt.show()
img.save(file_name)
return img
if __name__ == '__main__':
getQRcode("川普","name.png")
getQRcode("川普", "name_logo.png", "logo.jpg")