python批量生成带logo带文字的二维码
1. 核心文件(01.py), 所有的主要逻辑都在这里面
from PIL import ImageFont, ImageDraw, Image import qrcode import os def createQrCode(text): qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_H, # 比例大约等于1:28 box_size=20, border=1, ) qr.add_data(text) qr.make(fit=True) qrImg = qr.make_image(fill_color="black", back_color="white") return qrImg def createBg(qrImg): img = qrImg.resize((580, 580), Image.ANTIALIAS) bg = Image.new("RGB", (580, 660), "#ffffff") bg.paste(img, (0, 0)) return bg def drawFont(bg, text): fontStyle = "./文泉驿等宽微米黑.ttf" font = ImageFont.truetype(fontStyle, 24) w, h = font.getsize(text) # 70, 15 draw = ImageDraw.Draw(bg) draw.text(((580 - w) / 2, 600), text, fill="#000000", font=font) return bg def drawLogo(qr, logo, proportion): w, h = qr.size logo = Image.open(logo) resizeW = (int(w * proportion)) # resizeW = type(size) logo = logo.resize((resizeW, resizeW), Image.ANTIALIAS) logoW, logoH = logo.size center = int((w - logoW) / 2) qr.paste(logo, (center, center)) return qr def draw(qrText, descText, logoPath, savePath, filename, proportion): qrImg = createQrCode(qrText) bgImg = createBg(qrImg) bgImg2 = drawFont(bgImg, descText) res = drawLogo(bgImg2, logoPath, proportion) # 判断是否有对应的文件夹, 没有的话, 手动生成一个 if (savePath in os.listdir() and os.path.isfile(savePath) or savePath not in os.listdir()): os.mkdir(savePath) res.save(os.path.join(savePath, filename)) print(f"生成二维码『{filename}』成功") """ 参数说明: draw(qrText, descText, logoPath, savePath, filename, proportion) qrText: 二维码显示的内容 descText: 二维码下面的文案显示 logoPath: 二维码中间的logo路径, 相对/绝对 savePath: 保存的文件夹路径, 例如 ./ (当前) filename: 希望保存的名字 proportion: logo 相对于 二维码的比例 """ # 单独生成一张 # draw("2021101023", "2021101023", "./logo.jpg", "temp", "02.png", 0.25) # 读取文件, 生成若干张 def readProperties(path): with open(path, 'r', encoding="utf-8") as file: qrList = file.readlines() for i in qrList: cfg = i.strip().split('|') if (len(cfg) == 6): draw(cfg[0], cfg[1], cfg[2], cfg[3], cfg[4], float(cfg[5])) readProperties('./qrcode.txt')
2. 目录文件(qrcode.txt), 如图所示, 会成成六张二维码
2021101023|2021101023|logo.jpg|电客二维码|02.png|0.25 2021101024|2021101024|logo.jpg|电客二维码|23.png|0.25 2021101025|2021101025|logo.jpg|电客二维码|24.png|0.25 2021101026|2021101026|logo.jpg|电客二维码|25.png|0.25 2021101027|2021101027|logo.jpg|电客二维码|26.png|0.25 2021101028|2021101028|logo.jpg|电客二维码|27.png|0.25 2021101029|2021101029|logo.jpg|电客二维码|28.png|0.25 2021101034|2021101034|logo.jpg|电客二维码|29.png|0.25
3. 执行文件 ( generate.bat ), 没有的话, 直接执行 01.py 也是一样的
python 01.py
pause
4. 其他文件(自备)
logo文件
ttf字体文件
结果展示
本想把生活活成一首诗, 时而优雅 , 时而豪放 , 结果活成了一首歌 , 时而不靠谱 , 时而不着调
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?