推荐两个库:qrcode 和 python-qrcode。
qrcode 运行在 Python 3 版本上,它可以玩出很多花样。例如能生成以下三种二维码图片:普通二维码、带图片的艺术二维码(黑白与彩色)、动态二维码(黑白与彩色)。它比较适合直接用于生成二维码图片的场景。
安装 qrcode 库可以使用 pip 方式。但是该库依赖 pillow、numpy 和imageio。因此,我们需要先安装依赖库,再安装 qrcode。
# 逐一安装
pip install pillow
pip install numpy
pip install imageio
pip install myqr
python-qrcode
python-qrcode 相比 qrcode 要稍微逊色一点。不过它也有自己的特色。它支持生成矢量图,而且比较适合在代码中生成二维码的场景。
安装 python-qrcode 同样建议使用 pip 方式,安装命令如下:
pip install qrcode
安装完这些依赖的库以后就可以开工啦。下面是完整的代码:
#!/user/bin/Python3
import qrcode
from PIL import Image
import matplotlib.pyplot as plt
'''
【红色】:red 【橙色】:orange 【黄色】:yellow 【绿】:green 【 蓝】:blue【紫】:purple
【灰色】:gray 【白色】:white 【粉红色】:pink 【黑色】:black【墨绿色】:dark green 【橙红色】:orange-red
'''
def getQRcode(strs, name):
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=2,
)
# 添加数据
qr.add_data(strs)
# 填充数据
qr.make(fit=True)
# 生成图片
img = qr.make_image(fill_color="blue", back_color="white")
img = img.convert("CMYK") # RGBA
# 添加logo
icon = Image.open("1233.png")
# 获取图片的宽高
img_w, img_h = img.size
factor = 6
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
# 重新设置logo的尺寸
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)
# 显示图片
plt.imshow(img)
plt.show()
img.save(name)
return img
if __name__ == '__main__':
getQRcode("https://music.163.com/song?id=36990266&userid=112961323", '01.png')
print('execute.....')