本文目录导读:

我来介绍几种批量生成二维码的实用脚本方案。
使用 Python + qrcode 库
基础版本
import qrcode
import os
from PIL import Image
import pandas as pd
def batch_generate_qrcode(data_list, output_dir="qrcodes"):
"""
批量生成二维码
:param data_list: [(文件名, 二维码内容), ...]
:param output_dir: 输出目录
"""
# 创建输出目录
if not os.path.exists(output_dir):
os.makedirs(output_dir)
for filename, content in data_list:
# 创建二维码对象
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=10,
border=4,
)
# 添加数据
qr.add_data(content)
qr.make(fit=True)
# 生成图片
img = qr.make_image(fill_color="black", back_color="white")
# 保存
filepath = os.path.join(output_dir, f"{filename}.png")
img.save(filepath)
print(f"已生成: {filepath}")
从 Excel 读取数据批量生成
def generate_from_excel(excel_file, content_column, name_column, output_dir="qrcodes"):
"""
从Excel读取数据批量生成二维码
:param excel_file: Excel文件路径
:param content_column: 内容列名
:param name_column: 文件名列名
"""
# 读取Excel
df = pd.read_excel(excel_file)
# 准备数据
data_list = []
for _, row in df.iterrows():
data_list.append((row[name_column], row[content_column]))
# 批量生成
batch_generate_qrcode(data_list, output_dir)
# 使用示例
if __name__ == "__main__":
# 方法1:直接传入数据
data = [
("qrcode_1", "https://example.com/1"),
("qrcode_2", "https://example.com/2"),
("qrcode_3", "这是一段文本内容"),
]
batch_generate_qrcode(data)
# 方法2:从Excel读取
# generate_from_excel("data.xlsx", "内容", "文件名")
带 Logo 的高级版本
def generate_with_logo(data_list, logo_path=None, output_dir="qrcodes_with_logo"):
"""
带Logo的二维码生成
"""
import qrcode
from qrcode.image.styledpil import StyledPilImage
from qrcode.image.styles.moduledrawers import RoundedModuleDrawer
if not os.path.exists(output_dir):
os.makedirs(output_dir)
for filename, content in data_list:
# 创建二维码
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=10,
border=2,
)
qr.add_data(content)
qr.make(fit=True)
# 生成图片
if logo_path and os.path.exists(logo_path):
# 使用圆角模块
img = qr.make_image(
image_factory=StyledPilImage,
module_drawer=RoundedModuleDrawer(),
fill_color="black",
back_color="white"
)
# 添加Logo
img = img.convert("RGBA")
logo = Image.open(logo_path)
# 调整Logo大小
logo_size = int(img.size[0] * 0.2)
logo = logo.resize((logo_size, logo_size), Image.LANCZOS)
# 计算位置
pos = ((img.size[0] - logo_size) // 2,
(img.size[1] - logo_size) // 2)
# 粘贴Logo
img.paste(logo, pos, logo)
else:
img = qr.make_image(fill_color="black", back_color="white")
# 保存
img.save(os.path.join(output_dir, f"{filename}.png"))
print(f"已生成带Logo的二维码: {filename}.png")
JavaScript 版(Node.js)
// 使用 qrcode 包
// npm install qrcode
const QRCode = require('qrcode');
const fs = require('fs');
const path = require('path');
async function batchGenerateQR(dataList, outputDir = './qrcodes') {
// 创建输出目录
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir, { recursive: true });
}
for (const [filename, content] of dataList) {
const filepath = path.join(outputDir, `${filename}.png`);
try {
await QRCode.toFile(filepath, content, {
color: {
dark: '#000000',
light: '#ffffff'
},
width: 400,
margin: 2
});
console.log(`已生成: ${filepath}`);
} catch (error) {
console.error(`生成失败 ${filename}:`, error);
}
}
}
// 使用示例
const data = [
['qrcode_1', 'https://example.com/1'],
['qrcode_2', 'https://example.com/2'],
];
batchGenerateQR(data);
命令行工具版本
#!/bin/bash
# batch_qrcode.sh
# 需要安装 qrencode
# sudo apt-get install qrencode # Ubuntu/Debian
# brew install qrencode # macOS
# 从文件读取数据批量生成
while IFS=',' read -r filename content
do
# 去除空格
filename=$(echo "$filename" | xargs)
content=$(echo "$content" | xargs)
# 生成二维码
qrencode -o "${filename}.png" -s 10 -l H "$content"
echo "已生成: ${filename}.png"
done < data.csv
使用建议
安装依赖
# Python pip install qrcode[pil] pandas # Node.js npm install qrcode # 系统工具 sudo apt-get install qrencode # Linux brew install qrencode # macOS
CSV 数据格式
filename,content
qrcode_1,https://example.com
qrcode_2,这是测试内容
qrcode_3,123456789
高级功能扩展
def advanced_batch_generate(data_list, config=None):
"""
高级批量生成配置
config = {
'logo': 'logo.png', # Logo图片
'size': 400, # 尺寸
'color': ('#000', '#fff'), # 颜色
'custom_design': 'round', # 自定义样式
}
"""
# ... 实现代码
def batch_url_shorten_and_qrcode(urls):
"""
先缩短URL再生成二维码
"""
# ... 实现代码
选择最合适的方案取决于你的具体需求:Python适合数据处理,Node.js适合Web应用,命令行工具适合简单的批量操作。