使用Python实现将网址生成二维码
前言
qrcode 是指二维码(Quick Response Code)的一种编码方式,它是一种特定的条码格式,可以存储比传统条码更多的信息,如网址、联系信息、地理位置等。qrcode 广泛应用于各种场景,如商品包装、广告、支付、票务等,因为它允许用户通过智能手机等设备快速扫描并访问相关信息。
在Python中,qrcode 通常指的是使用 qrcode 库(也称为 qrcode[pil] 或 qrcode-python)来生成二维码图像。这个库提供了创建和操作二维码的API,允许开发者轻松地将数据编码为二维码图像,并将其保存到文件或直接在屏幕上显示。
pip install qrcode Pillow
或者




完整代码
# 地址生成二维码
import qrcode
import os
# 创建QRCode对象
qr = qrcode.QRCode(
# 控制二维码的大小,1是最小的矩阵13x13,数值越大尺寸越大,可存储的信息也越多
version=1,
# 控制二维码的错误纠错能力
# ERROR_CORRECT_L 大约7%或更少的错误会被更正
error_correction=qrcode.constants.ERROR_CORRECT_L,
# 控制每一个点(box)的像素数
box_size=10,
# 控制边框(最小值为4)
border=4,
)
# 添加数据到QRCode对象
# qr.add_data() 方法在 qrcode 库中用于向 QR 码对象添加数据。
# 这些数据并不一定是网站的 URL,它们可以是任何形式的有效字符串,
# 只要这些数据能够被 QR 码编码并且解码后能够被目标设备或应用程序正确识别和处理。
# https://www.baidu.com
data = input("请输入您的网址:")
# 注意:如果输入的内容包含特殊字符或非常长的字符串,
# 可能需要在生成二维码前进行验证或预处理,以确保其能够被正确编码和解码。
qr.add_data(f"{data}")
qr.make(fit=True) # 参数fit=True用于在可能的情况下调整二维码大小以适应数据
# 生成图像
# 可以将生成的二维码保存为文件,例如PNG格式
img = qr.make_image(fill='black', back_color='white')
# 保存二维码图像并显示
img_name = input("请输入您的二维码照片名字(或输入带后缀的名字如mycode.png):")
if not img_name.lower().endswith('.png'):
# 检查后缀,但注意qrcode默认生成PNG
# 如果用户没有输入.png,则添加.png(因为qrcode生成的是PNG)
img_name = img_name + ".png"
# 允许用户输入保存目录和文件名
save_dir = input("请输入您想要保存二维码的目录(例如:C:/Users/YourName/Pictures/):")
# 确保目录末尾有斜杠(如果不是根目录的话)
# 使用os.sep来获取当前操作系统的路径分隔符,以确保路径在不同操作系统上都是正确的
# 首先检查 save_dir 是否不以 os.sep 结尾,并且确保它不是一个空字符串。
# 如果这两个条件都满足,那么它就在 save_dir 的末尾添加一个路径分隔符。
if not save_dir.endswith(os.sep) and save_dir != "":
save_dir += os.sep
# 检查目录是否存在,不存在则创建(exist_ok=True参数允许目录已经存在而不引发错误)
os.makedirs(save_dir, exist_ok=True)
# 构建完整的文件路径
full_path = os.path.join(save_dir, img_name)
# 显示保存的位置
print(f"二维码生成地址为: {full_path}")
# 保存二维码图像(一般为你写的文件夹目录下)
img.save(full_path)
print(f"二维码已生成并保存为: {img_name}")
# 尝试显示图像
# 添加异常处理来捕获img.show()可能引发的错误,并在无法显示图像时打印一条消息。
try:
img.show()
except Exception as e:
print(f"无法显示图像:{e}")
效果如下:



知识扩展
你可以使用 Python 的 qrcode 库轻松地将网址生成二维码。以下是一个完整指南,包括安装、基本用法以及高级定制(如调整大小、颜色等)。
1. 安装 qrcode 库
在终端中运行:
pip install qrcode[pil]
安装 qrcode[pil] 会同时安装 Pillow 库,用于生成图片文件。
2. 基础示例:生成二维码并保存为图片
import qrcode
# 要编码的网址
url = "https://www.example.com"
# 创建 QRCode 对象
qr = qrcode.QRCode(
version=1, # 控制二维码的尺寸(1-40),1 是最小尺寸
error_correction=qrcode.constants.ERROR_CORRECT_L, # 纠错等级
box_size=10, # 每个小格子的大小(像素)
border=4, # 边框宽度(格子数)
)
# 添加数据
qr.add_data(url)
qr.make(fit=True)
# 生成图像
img = qr.make_image(fill_color="black", back_color="white")
# 保存图片
img.save("qrcode_example.png")运行后会在当前目录生成一张名为 qrcode_example.png 的二维码图片,扫描即可访问该网址。
3. 参数详解
| 参数 | 说明 |
|---|---|
version | 整数 1~40,控制二维码的网格数量。1 为 21x21,每增加 1 版本,边长增加 4 格。设为 None 或 fit=True 可自动调整。 |
error_correction | 纠错等级: - ERROR_CORRECT_L:约 7% 的字码可被修正- ERROR_CORRECT_M(默认):约 15%- ERROR_CORRECT_Q:约 25%- ERROR_CORRECT_H:约 30% |
box_size | 每个小格子的像素大小,例如 10 表示每个格子 10×10 像素。 |
border | 二维码四周留白的格子数,默认 4(至少需要 4 格以确保扫描识别)。 |
fill_color | 前景色(即二维码颜色),默认黑色。 |
back_color | 背景色,默认白色。 |
4. 高级用法
生成二维码并直接显示(Jupyter Notebook 或 GUI)
import qrcode
from PIL import Image
qr = qrcode.QRCode(box_size=5, border=2)
qr.add_data("https://www.google.com")
qr.make(fit=True)
img = qr.make_image(fill_color="blue", back_color="yellow")
# 在 Jupyter 中显示
from IPython.display import display
display(img)
# 或者直接调用 show() 打开系统图片查看器(需要 Pillow)
img.show()生成二维码并转为字节流(不保存文件,直接用于 Web 响应)
import qrcode
from io import BytesIO
qr = qrcode.QRCode()
qr.add_data("https://www.github.com")
qr.make(fit=True)
img = qr.make_image()
# 保存到内存中的字节流
img_byte_arr = BytesIO()
img.save(img_byte_arr, format='PNG')
img_byte_arr = img_byte_arr.getvalue()
# 此时 img_byte_arr 可直接作为 HTTP 响应返回,或写入文件等操作自定义二维码颜色和形状(使用 Pillow 进一步处理)
import qrcode
from PIL import Image, ImageDraw
# 生成普通二维码
qr = qrcode.QRCode(box_size=8, border=2)
qr.add_data("https://www.python.org")
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white").convert('RGB')
# 将二维码颜色改为渐变色(这里简单示例:将黑色区域变为红色)
pixels = img.load()
for i in range(img.size[0]):
for j in range(img.size[1]):
if pixels[i, j] == (0, 0, 0): # 黑色部分
pixels[i, j] = (255, 0, 0) # 改为红色
img.save("red_qrcode.png")5. 注意事项
- 网址长度:二维码的容量是有限的。较长的网址可以适当提高
version或使用网址缩短服务。 - 纠错等级:如果要在二维码中心添加 Logo,建议使用
ERROR_CORRECT_H以保证可读性。 - 扫描测试:生成后务必用手机扫描验证,确保正确解析。
6. 完整示例:带 Logo 的二维码
import qrcode
from PIL import Image
# 创建二维码
qr = qrcode.QRCode(
version=5,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=10,
border=4,
)
qr.add_data("https://www.example.com")
qr.make(fit=True)
# 生成图像
img = qr.make_image(fill_color="black", back_color="white").convert('RGB')
# 打开 Logo 图片并调整大小
logo = Image.open("logo.png")
logo_size = 80
logo = logo.resize((logo_size, logo_size))
# 计算粘贴位置(中心)
pos = ((img.size[0] - logo_size) // 2, (img.size[1] - logo_size) // 2)
img.paste(logo, pos)
img.save("qrcode_with_logo.png")到此这篇关于使用Python实现将网址生成二维码的文章就介绍到这了,更多相关Python生成二维码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python使用pickle模块报错EOFError Ran out of input的解决方法
这篇文章主要介绍了Python使用pickle模块报错EOFError Ran out of input的解决方法,涉及Python异常捕获操作处理相关使用技巧,需要的朋友可以参考下2018-08-08
Python实现Word文档自动化的操作大全(批量生成、模板填充与内容修改)
在职场中,Word文档是公认的好伙伴,但你有没有被它折磨过?批量生成合同、制作报告以及发放证书/通知等等,这些重复、低效的文档制作和排版耗时问题,严重拖慢了你的办公自动化进程今天,我将带你进入Python操作Word的奇妙世界,需要的朋友可以参考下2025-11-11


最新评论