python 自动化从入门到实战-做一个超实用的二维码生成工具(5)
10分钟学会!用Python做一个超实用的二维码生成工具
今天要给大家分享一个超实用的Python小工具——二维码生成器。
不管是分享网址、添加好友还是制作活动物料,二维码都是我们日常生活和工作中经常用到的工具。今天,我们就来看看如何用Python快速搭建一个属于自己的二维码生成网站,简单到连编程小白都能跟着做!
一、这个工具能做什么?
我们要做的这个二维码生成工具,功能可强大了:
✅ 只要在网页里输入文字、网址或任何内容,就能立刻生成对应的二维码
✅ 生成的二维码会自动保存在电脑上,再也不怕找不到
✅ 支持直接下载二维码图片,方便你随时使用
✅ 界面简洁友好,就算是第一次使用也能轻松上手
局域网访问地址
http://127.0.0.1:5000/generate_qr
运行项目即可:
二、需要准备什么?
做这个工具其实非常简单,只需要准备几样东西:
- 安装好Python(版本3.6以上)
- 安装几个必要的Python库
- 一点耐心和好奇心
三、核心代码解析
话不多说,我们来看看这个工具的核心代码是怎么写的吧!
1. 先搭好框架
首先,我们需要用Flask框架搭建一个简单的Web应用:
from flask import Flask, render_template, request, send_file
import qrcode
import os
from datetime import datetime
import ioapp = Flask(__name__)# 确保保存图片的目录存在
QR_IMAGES_DIR = "qr_images"
if not os.path.exists(QR_IMAGES_DIR):os.makedirs(QR_IMAGES_DIR)
这段代码就像是建房子前先打好地基,我们导入了必要的工具库,并创建了一个Flask应用实例。特别要注意的是os.makedirs
这一行,它会自动帮我们创建一个存放二维码图片的文件夹,非常贴心!
2. 设计首页
接下来,我们需要设计一个简单的首页,让用户可以输入要生成二维码的内容:
@app.route('/')
def index():return render_template('index.html')
这几行代码就像给房子装了一扇门,当用户访问我们的网站时,就会看到一个漂亮的输入页面。
3. 核心功能:生成二维码
最关键的部分来了,我们需要编写生成二维码的功能:
@app.route('/generate_qr', methods=['POST'])
def generate_qr():# 获取用户输入的内容content = request.form.get('content', '')if not content:return render_template('index.html', error='请输入内容后再生成二维码')try:# 生成二维码qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_L,box_size=10,border=4,)qr.add_data(content)qr.make(fit=True)# 创建二维码图片img = qr.make_image(fill_color="black", back_color="white")# 生成唯一的文件名timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')file_name = f"qr_code_{timestamp}.png"file_path = os.path.join(QR_IMAGES_DIR, file_name)# 保存图片到本地img.save(file_path)# 返回结果页面,显示二维码return render_template('result.html', qr_image=file_path, content=content,file_name=file_name)except Exception as e:return render_template('index.html', error=f'生成二维码失败: {str(e)}')
这段代码就像是房子的心脏,它做了几件重要的事:
- 获取用户在网页上输入的内容
- 使用
qrcode
库把内容转换成二维码图片 - 给图片取一个包含时间戳的唯一名字(这样就不会重复啦!)
- 把图片保存到我们之前创建的文件夹里
- 最后显示一个包含二维码的结果页面
4. 添加下载功能
为了让用户能够方便地获取二维码图片,我们还需要添加一个下载功能:
@app.route('/download/<filename>')
def download_qr(filename):file_path = os.path.join(QR_IMAGES_DIR, filename)if os.path.exists(file_path):return send_file(file_path, as_attachment=True)else:return "文件不存在", 404
这段代码就像是给房子装了一个快递柜,用户只需要点一下按钮,就能把生成的二维码图片下载到自己的电脑上。
5. 启动应用
最后,我们需要写一行代码来启动这个应用:
if __name__ == '__main__':app.run(debug=True)
这行代码就像是按下了房子的电源开关,运行这行代码后,我们的二维码生成工具就开始工作啦!
四、制作网页界面
除了Python代码,我们还需要两个简单的HTML文件来制作网页界面:
1. 首页(index.html)
这个页面包含一个文本输入框和一个"生成二维码"按钮,设计得简洁明了:
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>二维码生成工具</title><style>/* 这里是一些简单的样式代码 */</style>
</head>
<body><div class="container"><h1>二维码生成工具</h1>{% if error %}<div class="error">{{ error }}</div>{% endif %}<form action="/generate_qr" method="post"><div class="form-group"><label for="content">请输入要生成二维码的内容:</label><textarea id="content" name="content" placeholder="例如:网址、文本信息等..."></textarea></div><button type="submit">生成二维码</button></form><div class="tips"><p>✨ 提示:</p><ul><li>您可以输入网址、联系信息、文本等内容</li><li>生成的二维码将保存在本地并可以下载</li><li>扫描二维码即可查看您输入的内容</li></ul></div></div>
</body>
</html>
2. 结果页(result.html)
当用户生成二维码成功后,就会看到这个页面,它会显示生成的二维码图片,并提供下载按钮:
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>二维码生成成功</title><style>/* 这里是一些简单的样式代码 */</style>
</head>
<body><div class="container"><h1>二维码生成成功!</h1><div class="qr-container"><img src="/download/{{ file_name }}" alt="生成的二维码" style="max-width: 100%; height: auto;"></div><div class="file-info">文件已保存至:{{ qr_image }}</div><div class="content-display"><div class="content-label">二维码内容:</div><div class="content-value">{{ content }}</div></div><div class="buttons"><a href="/download/{{ file_name }}" download><button class="download-btn">下载二维码</button></a><a href="/"><button class="new-btn">生成新的二维码</button></a></div><div class="info"><p>📱 扫描二维码即可查看您输入的内容</p><p>💾 二维码图片已自动保存到本地,您可以随时下载使用</p></div></div>
</body>
</html>
五、如何使用这个工具?
现在,让我们来看看如何使用这个工具吧!步骤非常简单:
1. 安装必要的库
首先,我们需要安装三个Python库:Flask、qrcode和Pillow。打开命令提示符,输入以下命令:
pip install flask qrcode Pillow
2. 运行应用
安装完成后,找到我们的qrcode_generator.py
文件,在命令提示符中输入:
python qrcode_generator.py
运行成功后,你会看到类似这样的提示:
* Serving Flask app 'qrcode_generator'
* Debug mode: on
* Running on http://127.0.0.1:5000
3. 生成二维码
打开浏览器,输入http://127.0.0.1:5000
,你就会看到我们的二维码生成工具的首页啦!在文本框里输入你想要生成二维码的内容(比如一个网址),然后点击"生成二维码"按钮,稍等片刻,你就能看到生成的二维码了!
4. 下载和使用二维码
在结果页面,你可以看到生成的二维码图片,点击"下载二维码"按钮,就可以把图片保存到你的电脑上。你还可以点击"生成新的二维码"按钮,继续生成其他内容的二维码。
六、这个工具在生活中的应用场景
这个二维码生成工具在生活和工作中有很多实用的场景:
- 分享联系方式:把你的微信、手机号等信息生成二维码,别人扫码就能添加你
- 制作活动物料:为活动链接、报名表单生成二维码,方便参与者扫码查看
- 分享文件:把网盘链接生成二维码,别人扫码就能下载文件
- 制作电子名片:把个人信息生成二维码,替代传统名片
- 产品推广:为产品介绍页、购买链接生成二维码,方便客户了解和购买
七、扩展小技巧
如果你想让这个工具更加强大,还可以尝试以下扩展功能:
- 自定义二维码颜色:修改代码中的
fill_color
和back_color
参数,可以生成彩色的二维码 - 添加Logo:在二维码中间添加一个小Logo,让二维码更加个性化
- 调整二维码大小:修改代码中的
box_size
参数,可以调整二维码的大小 - 批量生成二维码:如果你需要生成多个二维码,可以编写一个批处理功能
八、常见问题解答
Q: 为什么生成的二维码扫描不出来?
A: 可能是输入的内容太长了,试试输入短一点的内容,或者调整二维码的纠错级别。
Q: 二维码图片保存在哪里?
A: 默认保存在运行程序的文件夹下的qr_images
文件夹里。
Q: 可以在手机上使用这个工具吗?
A: 可以!只要在手机浏览器中输入电脑的IP地址和端口号,就可以在手机上使用这个工具了。
Q: 这个工具需要联网吗?
A: 不需要!这个工具是完全离线运行的,所有的二维码生成和保存都在你的电脑上完成。
九、完整代码
1、【后端代码】
from flask import Flask, render_template, request, send_file
import qrcode
import os
from datetime import datetime
import ioapp = Flask(__name__)# 确保保存图片的目录存在
QR_IMAGES_DIR = "qr_images"
if not os.path.exists(QR_IMAGES_DIR):os.makedirs(QR_IMAGES_DIR)@app.route('/')
def index():return render_template('index.html')@app.route('/generate_qr', methods=['POST'])
def generate_qr():# 获取用户输入的内容content = request.form.get('content', '')if not content:return render_template('index.html', error='请输入内容后再生成二维码')try:# 生成二维码qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_L,box_size=10,border=4,)qr.add_data(content)qr.make(fit=True)# 创建二维码图片img = qr.make_image(fill_color="black", back_color="white")# 生成唯一的文件名timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')file_name = f"qr_code_{timestamp}.png"file_path = os.path.join(QR_IMAGES_DIR, file_name)# 保存图片到本地img.save(file_path)# 将图片转换为字节流用于显示img_byte_arr = io.BytesIO()img.save(img_byte_arr, format='PNG')img_byte_arr.seek(0)# 返回结果页面,显示二维码return render_template('result.html', qr_image=file_path, content=content,file_name=file_name)except Exception as e:return render_template('index.html', error=f'生成二维码失败: {str(e)}')@app.route('/download/<filename>')
def download_qr(filename):file_path = os.path.join(QR_IMAGES_DIR, filename)if os.path.exists(file_path):return send_file(file_path, as_attachment=True)else:return "文件不存在", 404if __name__ == '__main__':app.run(debug=True)
2、【前端代码】
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>二维码生成工具</title><style>body {font-family: Arial, 'Microsoft YaHei', sans-serif;max-width: 600px;margin: 0 auto;padding: 20px;background-color: #f5f5f5;}.container {background-color: white;padding: 30px;border-radius: 8px;box-shadow: 0 2px 10px rgba(0,0,0,0.1);margin-top: 50px;}h1 {text-align: center;color: #333;}.form-group {margin-bottom: 20px;}label {display: block;margin-bottom: 5px;font-weight: bold;color: #555;}textarea {width: 100%;height: 100px;padding: 10px;border: 1px solid #ddd;border-radius: 4px;font-size: 16px;resize: vertical;}button {width: 100%;padding: 12px;background-color: #4CAF50;color: white;border: none;border-radius: 4px;font-size: 16px;cursor: pointer;}button:hover {background-color: #45a049;}.error {color: red;text-align: center;margin-bottom: 15px;}.tips {margin-top: 20px;padding: 15px;background-color: #f9f9f9;border-left: 4px solid #ccc;border-radius: 4px;}</style>
</head>
<body><div class="container"><h1>二维码生成工具</h1>{% if error %}<div class="error">{{ error }}</div>{% endif %}<form action="/generate_qr" method="post"><div class="form-group"><label for="content">请输入要生成二维码的内容:</label><textarea id="content" name="content" placeholder="例如:网址、文本信息等..."></textarea></div><button type="submit">生成二维码</button></form><div class="tips"><p>✨ 提示:</p><ul><li>您可以输入网址、联系信息、文本等内容</li><li>生成的二维码将保存在本地并可以下载</li><li>扫描二维码即可查看您输入的内容</li></ul></div></div>
</body>
</html>
十、总结
怎么样?这个二维码生成工具是不是很简单又实用呢?通过几行Python代码,我们就搭建了一个功能完整的Web应用,不仅能生成二维码,还能下载和保存图片。
如果你是编程小白,希望这篇文章能让你对Python和Web开发有一些初步的了解;如果你已经有一些编程基础,希望这个工具能给你一些启发,帮助你开发更多实用的小工具!
最后,如果你在使用过程中遇到任何问题,或者有更好的想法和建议,欢迎在评论区留言讨论哦!
小贴士:如果你想随时使用这个工具,可以把它做成一个可执行文件,双击就能运行,这样即使是不懂编程的朋友也能轻松使用啦!
喜欢这篇文章的话,别忘了点赞、收藏和分享哦!我们下期再见!👋