本文的实验环境是 Python 3.6.1 |Anaconda 4.4.0 (64-bit),Win10
普通二维码
from PIL import Image
import qrcode
qr = qrcode.QRCode(
version=2, # 控制二维码的尺寸,此处为 25*25
error_correction=qrcode.constants.ERROR_CORRECT_H, # 控制二维码的错误纠正功能,此处为大约30%或更少的错误能被纠正
box_size=10, # 控制二维码中每个小格子包含的像素数
border=1) # 控制边框(二维码与图片边界的距离)
qr.add_data("https://www.jianshu.com/u/02877dbc2662") # 设置二维码中包含的数据
qr.make(fit=True) # 二维码大小自适应
img = qr.make_image()
img.save("qrcode.png")
中间含图片的二维码
from PIL import Image
import qrcode
qr = qrcode.QRCode(
version=2, # 控制二维码的尺寸,此处为 25*25
error_correction=qrcode.constants.ERROR_CORRECT_H, # 控制二维码的错误纠正功能,此处为大约30%或更少的错误能被纠正
box_size=10, # 控制二维码中每个小格子包含的像素数
border=1) # 控制边框(二维码与图片边界的距离)
qr.add_data("https://www.jianshu.com/u/02877dbc2662") # 设置二维码中包含的数据
qr.make(fit=True) # 二维码大小自适应
img = qr.make_image()
img = img.convert("RGBA")
icon = Image.open("748.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), icon)
img.save("filled_qrcode.png")
网友评论