使用qrcode库生成二维码最直接有效,需先安装qrcode和pillow:pip install qrcode pillow;2. 基础用法为qrcode.make(data)生成并保存图片;3. 高级定制可通过qrcode类设置version、error_correction、box_size、border等参数;4. 添加logo需借助pillow将二维码转为rgba模式,调整logo尺寸并居中粘贴,且必须设置error_correction=error_correct_h以确保可识别;5. 二维码扫不出来常见原因包括纠错级别过低、logo过大、数据量过大导致密集、颜色对比度不足、边框不足、物理尺寸过小或扫描器问题,应依次排查这些因素;最终生成的二维码图片可通过img.save()保存,整个流程结合qrcode与pillow实现高效定制化输出。

Python制作二维码,最直接、最常用且效果非常好的方式,就是利用
qrcode
要使用
qrcode
pip install qrcode Pillow
Pillow
qrcode
最基础的用法,生成一个包含特定信息的二维码图片:
import qrcode
# 你想编码的信息
data = "https://www.example.com"
# 最简单的生成方式
img = qrcode.make(data)
# 保存图片
img.save("my_simple_qrcode.png")
print("简单的二维码已生成:my_simple_qrcode.png")如果你想对二维码的样式做些调整,比如改变颜色、大小或者纠错级别,
qrcode.QRCode
立即学习“Python免费学习笔记(深入)”;
import qrcode
from qrcode.constants import ERROR_CORRECT_H # 导入纠错级别常量
data = "https://www.another-example.com/long-url-test"
# 创建一个QRCode对象,并设置参数
qr = qrcode.QRCode(
version=1, # 控制二维码的大小(1-40),数字越大,能存储的信息越多,二维码也越大。
# None表示库会自动选择合适的版本。
error_correction=ERROR_CORRECT_H, # 纠错级别,H是最高级别,能容忍约30%的损坏。
# L, M, Q, H,级别越高,冗余越多,二维码越密。
box_size=10, # 每个二维码“小方块”的像素大小。
border=4, # 二维码边框的宽度(以box_size为单位)。至少4个单位的边框是标准。
)
# 添加数据
qr.add_data(data)
qr.make(fit=True) # 确保所有数据都适配到二维码中
# 生成图片
# fill_color和back_color可以设置二维码的颜色
img = qr.make_image(fill_color="black", back_color="white")
# 保存图片
img.save("my_custom_qrcode.png")
print("定制的二维码已生成:my_custom_qrcode.png")version=None
选择
qrcode
qrcode
它的优势很明显:
qrcode.make()
qrcode
我记得有一次,我需要批量生成带公司Logo的员工二维码,
qrcode
给二维码中间加Logo是常见的需求,能提升品牌识别度。
qrcode
核心思路是:先生成二维码,再把Logo图片粘贴到二维码的中心位置。
import qrcode
from PIL import Image # 导入Pillow库
# 1. 配置二维码参数
qr = qrcode.QRCode(
version=None, # 自动选择版本
error_correction=qrcode.constants.ERROR_CORRECT_H, # 纠错级别设为最高,以便容纳Logo
box_size=10,
border=4,
)
# 2. 添加数据并生成二维码图片
qr.add_data("https://www.your-company.com/product-page")
qr.make(fit=True)
img_qr = qr.make_image(fill_color="black", back_color="white").convert("RGBA") # 转换为RGBA模式,方便粘贴透明Logo
# 3. 加载Logo图片
try:
img_logo = Image.open("your_logo.png").convert("RGBA") # 确保Logo是RGBA模式,支持透明度
except FileNotFoundError:
print("Logo文件未找到,请确保 'your_logo.png' 存在于当前目录。")
exit()
# 4. 计算Logo的尺寸和位置
# Logo通常应该占二维码总面积的10%-30%左右,过大可能影响识别
qr_width, qr_height = img_qr.size
logo_width, logo_height = img_logo.size
# 调整Logo尺寸:这里我通常会根据二维码的尺寸来决定Logo的最终尺寸
# 比如,让Logo的宽度是二维码宽度的1/4到1/5
logo_target_width = qr_width // 4
logo_target_height = int(logo_target_width * (logo_height / logo_width)) # 按比例缩放高度
img_logo = img_logo.resize((logo_target_width, logo_target_height), Image.LANCZOS) # LANCZOS是高质量缩放算法
# 计算粘贴位置:居中
pos_x = (qr_width - logo_target_width) // 2
pos_y = (qr_height - logo_target_height) // 2
# 5. 将Logo粘贴到二维码上
img_qr.paste(img_logo, (pos_x, pos_y), img_logo) # 使用img_logo作为mask,支持透明Logo
# 6. 保存最终的二维码图片
img_qr.save("qrcode_with_logo.png")
print("带Logo的二维码已生成:qrcode_with_logo.png")这里有个小细节,
error_correction
ERROR_CORRECT_H
这是个非常实际的问题,尤其是在批量生成或者首次尝试的时候。二维码扫不出来,往往不是库本身的问题,而是参数设置或者使用场景导致的。我总结了一些常见的“坑”和排查方法:
纠错级别太低(或Logo太大):
error_correction
H
error_correction
qrcode.constants.ERROR_CORRECT_H
数据量过大导致二维码过于密集:
qrcode
version
box_size
颜色对比度不足:
fill_color
back_color
边框(Quiet Zone)不足:
box_size
border
border
物理尺寸太小或打印模糊:
box_size
扫描器问题:
遇到扫不出来的情况,我的经验是先从最简单的、最容易出问题的地方开始排查:纠错级别、Logo尺寸、以及颜色对比度。这些往往是问题的症结所在。
以上就是Python如何制作二维码?qrcode库生成技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号