如何用Python案例实现二维码生成?从基础到实战的完整指南
目录导读
- 为什么选择Python生成二维码?
- 准备工作:安装必备库
- 基础案例:用qrcode库生成简单二维码
- 进阶案例:自定义样式与嵌入Logo
- 实战案例:批量生成二维码并保存为Excel
- 常见问题问答
- SEO优化建议与最佳实践
为什么选择Python生成二维码?
在数字化时代,二维码已成为连接线上线下的核心工具,从支付码到活动签到,从WiFi密码分享到产品溯源,Python凭借其简洁的语法和丰富的第三方库,成为生成二维码最热门的语言之一,与在线生成器相比,Python方案的优势在于:批量处理、自定义样式、数据隐私可控,且完全免费。

根据GitHub仓库统计,qrcode和segno两个库的周下载量均超过百万,说明Python在二维码生成领域的普及度极高。
准备工作:安装必备库
生成二维码的核心库是qrcode,此外推荐搭配Pillow处理图像、openpyxl处理Excel输出,安装命令如下:
pip install qrcode[pil] pillow openpyxl
备注:
[pil]表示同时安装Pillow依赖,用于支持彩色和图片定制。
基础案例:用qrcode库生成简单二维码
场景:将一段文本或URL转换为二维码图片。
代码示例:
import qrcode
# 要编码的数据(支持URL、文字、联系人等)
data = "https://www.baidu.com"
# 创建二维码对象
qr = qrcode.QRCode(
version=1, # 控制二维码大小(1~40,1最小)
error_correction=qrcode.constants.ERROR_CORRECT_H, # 纠错等级(L/M/Q/H)
box_size=10, # 每个小格子的像素数
border=4 # 边框宽度(最小为4)
)
qr.add_data(data)
qr.make(fit=True)
# 生成并保存图片
img = qr.make_image(fill_color="black", back_color="white")
img.save("basic_qrcode.png")
运行结果:在当前目录生成一个黑白二维码图片。
关键点:
version影响数据容量,自动适配可通过make(fit=True)实现。error_correction等级越高,容错能力越强,但二维码视觉上更复杂。
进阶案例:自定义样式与嵌入Logo
1 修改颜色与形状
img = qr.make_image(fill_color="darkblue", back_color="lightgray")
2 嵌入Logo(注意版权)
from PIL import Image
# 先按基础方法生成二维码
img = qr.make_image(fill_color="black", back_color="white").convert("RGB")
# 打开Logo图片(建议100x100以内)
logo = Image.open("logo.png")
logo = logo.resize((80, 80), Image.ANTIALIAS)
# 计算粘贴位置(居中)
pos = ((img.size[0] - logo.size[0]) // 2,
(img.size[1] - logo.size[1]) // 2)
img.paste(logo, pos)
# 保存带Logo的二维码
img.save("qrcode_with_logo.png")
注意:嵌入Logo会影响二维码扫描成功率,因此必须使用高纠错等级(ERROR_CORRECT_H),Logo尺寸建议不超过整体二维码的1/3。
实战案例:批量生成二维码并保存为Excel
场景:公司需要为100个产品生成唯一二维码,并关联产品ID。
解决方案:利用openpyxl读取Excel中的产品ID,批量生成二维码文件,再将文件名与ID对应写入新Excel。
import qrcode
import openpyxl
from openpyxl import Workbook
# 1. 读取Excel(假设有“产品ID”列)
wb = openpyxl.load_workbook("products.xlsx")
sheet = wb.active
product_ids = [row[0].value for row in sheet.iter_rows(min_row=2, max_col=1)] # 跳过表头
# 2. 创建新的结果Excel
result_wb = Workbook()
result_sheet = result_wb.active
result_sheet.title = "二维码映射表"
result_sheet.append(["产品ID", "二维码文件名"])
# 3. 批量生成二维码
for pid in product_ids:
data = f"https://verify.example.com/product?id={pid}" # 自定义链接
filename = f"qr_{pid}.png"
qr = qrcode.QRCode(version=2, error_correction=qrcode.constants.ERROR_CORRECT_M)
qr.add_data(data)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save(filename)
result_sheet.append([pid, filename])
# 4. 保存映射表
result_wb.save("qr_mapping.xlsx")
print("批量生成完成!共生成 {} 个二维码".format(len(product_ids)))
输出:
- 100个PNG二维码文件(命名如
qr_001.png) - 一个Excel映射文件,方便后续打印或分发。
常见问题问答
Q1:扫描生成的二维码出现“无效链接”怎么办?
A:首先检查data是否包含完整URL(如https://开头),如果二维码中嵌入Logo,请提高纠错等级至ERROR_CORRECT_H。
Q2:生成的二维码太小或太大,如何控制尺寸?
A:通过box_size参数调整每个模块的像素值,如果数据量较大,version会自动增加,此时建议固定box_size后,再手动调整图片缩放。
Q3:能否生成动态二维码(扫描后内容可变)?
A:Python生成的是静态二维码,动态二维码需借助服务器端重定向技术(如扫描后跳转到服务器,服务器根据条件返回不同内容),Python可以作为生成静态模板的工具,后端配合Flask/Django实现动态逻辑。
Q4:批量生成时图片重叠或文件名重复怎么办?
A:在文件名中增加时间戳或唯一ID(如uuid.uuid4()),建议使用os.path.join指定输出目录,避免文件混乱。
SEO优化建议与最佳实践
为了让你的“Python二维码生成”相关内容在谷歌和必应获得更好排名,请遵守以下规则:
- 关键词密度:自然植入“Python二维码生成”“qrcode库”“批量生成二维码”等核心词,每100字出现1-2次即可,避免堆砌。
- 长尾词覆盖:增加“如何用Python制作带Logo的二维码”“Python批量生成二维码保存到Excel”等长尾词组。
- 结构化数据:代码区块使用Markdown的`
或标记,便于爬虫识别为代码示例。 - 内链与外部权威引用:链接到Python官方文档和qrcode库的PyPI页面(如
pypi.org/project/qrcode)。 - 页面加载速度:压缩图片示例(建议使用WebP格式),代码片段避免冗余注释。
- 移动端适配:确保代码示例在手机上不溢出横屏,使用响应式布局。
最佳实践总结:
- 优先使用
qrcode库,它对参数控制最灵活。 - 生产环境中,生成的二维码建议添加logo时预留纠错冗余。
- 数据量超过200个字符时,自动调整
version参数或使用压缩算法。
通过以上从基础到实战的案例,你已掌握用Python灵活生成二维码的核心技能,从个人工具到企业级批量应用,Python都能高效胜任,现在不妨打开IDE,尝试生成你的第一个个性化二维码吧!