# -*- coding: utf-8 -*-
# @Time : 19-1-10 下午10:13
# @Author : Felix Wang
import qrcode
from PIL import Image
def make_qrcode(data, qrimg_path, logo_path=None):
"""
生成二维码
:param data: 网址
:param qrimg_path: 二维码存放路径
:param logo_path: logo路径,logo必须是png格式图片
:return:
"""
qr = qrcode.QRCode(
version=2,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=8,
border=2
)
qr.add_data(data) # 添加信息
qr.make(fit=True)
img = qr.make_image()
img = img.convert('RGBA')
if logo_path:
# 添加logo时logo的格式为png,不然会报错
icon = Image.open(logo_path)
img_w, img_h = img.size
factor = 5 # 比例,过小可能无法识别
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(qrimg_path)
if __name__ == '__main__':
test = """
将进酒⑴
书法作品《将进酒》
书法作品《将进酒》(13张)
君不见,黄河之水天上来⑵,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪⑶。
人生得意须尽欢⑷,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯⑸。
岑夫子,丹丘生⑹,将进酒,杯莫停⑺。
与君歌一曲⑻,请君为我倾耳听⑼。
钟鼓馔玉不足贵⑽,但愿长醉不复醒⑾。
古来圣贤皆寂寞,惟有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑⑿。
主人何为言少钱⒀,径须沽取对君酌⒁。
五花马⒂,千金裘,呼儿将出换美酒,与尔同销万古愁⒃。 [1]
"""
url = 'www.baidu.com'
make_qrcode(url,'url_qrcode.png')
make_qrcode(test, 'test_qrcode.png')
make_qrcode(test,'test_with_logo_qrcode.png',logo_path='logo.png') # logo必须是png