Python 生成二维码与条形码指南

使用 qrcodepython-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(商品码)、Code39Code128ISBN 等。

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")


三、关键注意事项
  1. 二维码容错率

    • ERROR_CORRECT_L:约7%容错
    • ERROR_CORRECT_H:约30%容错(推荐受损环境使用)
  2. 条形码校验位

    • EAN-13 自动计算第13位校验位,需输入12位数字
    • 校验算法基于加权求和取模,满足:
      $$\left( \sum_{i=1}^{12} w_i \cdot d_i \right) \mod 10 = 0$$
      其中 $w_i = 1$(奇数位)或 $3$(偶数位)
  3. 图像格式

    • 默认保存为PNG,可通过 writer=ImageWriter(fmt='JPEG') 修改格式

四、完整示例

生成带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

通过调整参数,可灵活应用于商品标签、电子门票、文档加密等场景。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐