Python 生成二维码 / 条形码:用 qrcode 与 python-barcode 库
·
Python 生成二维码与条形码指南
使用 qrcode 和 python-barcode 库可高效生成二维码/条形码,以下是详细实现步骤:
一、二维码生成(qrcode库)
1. 安装库
pip install qrcode[pil] # 安装qrcode及Pillow图像处理依赖
2. 基础用法
import qrcode
# 生成二维码
data = "https://www.example.com" # 编码内容
img = qrcode.make(data) # 创建二维码对象
img.save("qrcode.png") # 保存为PNG文件
3. 高级自定义
qr = qrcode.QRCode(
version=7, # 尺寸范围1-40(越大容量越高)
error_correction=qrcode.ERROR_CORRECT_H, # 容错率(L/M/Q/H)
box_size=10, # 每个模块的像素大小
border=4, # 边框宽度(模块数)
)
qr.add_data("Hello, Python!") # 添加数据
qr.make(fit=True) # 自动调整版本
img = qr.make_image(fill_color="blue", back_color="white") # 配色
img.save("custom_qr.png")
二、条形码生成(python-barcode库)
1. 安装库
pip install python-barcode # 安装条形码库
2. 支持格式
常用格式:EAN-13(商品码)、Code39、Code128、ISBN 等。
3. 生成示例
import barcode
from barcode.writer import ImageWriter
# 生成EAN-13条形码(12位数字+自动校验位)
ean = barcode.get_barcode_class("ean13")
code = ean("590123412345", writer=ImageWriter()) # 输入12位数字
code.save("barcode") # 保存为barcode.png(自动补.png后缀)
# 生成Code128条形码(支持任意文本)
code128 = barcode.get_barcode_class("code128")
text_code = code128("Python-2024", writer=ImageWriter())
text_code.save("text_barcode")
三、关键注意事项
-
二维码容错率
ERROR_CORRECT_L:约7%容错ERROR_CORRECT_H:约30%容错(推荐受损环境使用)
-
条形码校验位
EAN-13自动计算第13位校验位,需输入12位数字- 校验算法基于加权求和取模,满足:
$$\left( \sum_{i=1}^{12} w_i \cdot d_i \right) \mod 10 = 0$$
其中 $w_i = 1$(奇数位)或 $3$(偶数位)
-
图像格式
- 默认保存为PNG,可通过
writer=ImageWriter(fmt='JPEG')修改格式
- 默认保存为PNG,可通过
四、完整示例
生成带logo的二维码 + EAN-13条形码:
from PIL import Image
import qrcode, barcode
# 1. 带logo的二维码
logo = Image.open("logo.png").resize((60, 60)) # 调整logo尺寸
qr = qrcode.QRCode(error_correction=qrcode.ERROR_CORRECT_H)
qr.add_data("https://github.com")
img = qr.make_image().convert("RGB")
img.paste(logo, (img.size[0]//2-30, img.size[1]//2-30)) # 居中logo
img.save("qr_with_logo.png")
# 2. EAN-13条形码
ean = barcode.get_barcode_class("ean13")
ean("123456789012", writer=barcode.writer.ImageWriter()).save("product_code")
输出文件:
qrcode.png,custom_qr.png,barcode.png,text_barcode.png,qr_with_logo.png,product_code.png
通过调整参数,可灵活应用于商品标签、电子门票、文档加密等场景。
更多推荐


所有评论(0)