当前位置:

首页 > 编程开发 > 使用Python实现将网址生成二维码

使用Python实现将网址生成二维码

使用Python的qrcode库可生成二维码,支持自定义版本、纠错等级、颜色、边框、尺寸及像素大小等参数。通过Pillow可保存为图片并添加Logo,还能调整背景色与前景色。需注意网址长度影响纠错能力,建议生成后扫描验证以确保解码正确性。

前言

说到二维码,大家肯定都不陌生。它本质上是一种矩阵条码,能比传统条码存下更多信息,比如网址、联系人、地理位置,甚至一段文本。在 Python 里,qrcode 库就是专门用来干这个活的——它提供了生成、定制、保存二维码的一整套 API,配合 Pillow 还能直接输出图片文件。下面我们就来一步步搞定这件事,从最基础的安装,到参数调优、颜色定制,再到最后加个 Logo 都安排上。

使用Python实现将网址生成二维码

使用Python实现将网址生成二维码

使用Python实现将网址生成二维码

使用Python实现将网址生成二维码

完整代码

先看看一个可直接运行的完整脚本,用户输入网址和文件名就能生成二维码并保存到指定目录。后续再拆开细讲每个参数的作用。

# 地址生成二维码
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"
# 允许用户输入保存目录和文件名
sa ve_dir = input("请输入您想要保存二维码的目录(例如:C:/Users/YourName/Pictures/):")
# 确保目录末尾有斜杠(如果不是根目录的话)
# 使用os.sep来获取当前操作系统的路径分隔符,以确保路径在不同操作系统上都是正确的
# 首先检查 sa ve_dir 是否不以 os.sep 结尾,并且确保它不是一个空字符串。
# 如果这两个条件都满足,那么它就在 sa ve_dir 的末尾添加一个路径分隔符。
if not sa ve_dir.endswith(os.sep) and sa ve_dir != "":
    sa ve_dir += os.sep

# 检查目录是否存在,不存在则创建(exist_ok=True参数允许目录已经存在而不引发错误)
os.makedirs(sa ve_dir, exist_ok=True)

# 构建完整的文件路径
full_path = os.path.join(sa ve_dir, img_name)


# 显示保存的位置
print(f"二维码生成地址为: {full_path}")

# 保存二维码图像(一般为你写的文件夹目录下)
img.sa ve(full_path)

print(f"二维码已生成并保存为: {img_name}")
# 尝试显示图像
# 添加异常处理来捕获img.show()可能引发的错误,并在无法显示图像时打印一条消息。
try:
    img.show()
except Exception as e:
    print(f"无法显示图像:{e}")

运行后的效果就是这样:

使用Python实现将网址生成二维码

使用Python实现将网址生成二维码

使用Python实现将网址生成二维码

知识扩展

如果只是简单生成一个二维码,上面那段脚本已经够用了。但实际项目中往往需要控制尺寸、纠错等级、颜色,甚至往二维码中心加个 Logo。这里把常用的知识点拆开细讲。

1. 安装 qrcode 库

打开终端,一行命令搞定:

pip install qrcode[pil]

加上 [pil] 会自动安装 Pillow 库,这样生成的二维码才能保存为图片文件。如果只装 qrcode 本身也可以,但就不能直接生成图片了。

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.sa ve("qrcode_example.png")

运行后当前目录下就会出现 qrcode_example.png,手机扫一下就能跳转到对应的网址。

3. 参数详解

这几个参数决定了二维码的形态和容错能力,挨个看明白才能灵活配置。

参数说明
version整数 1~40,控制二维码的网格数量。1 为 21×21,每增加 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背景色,默认白色。

值得强调的是 version 和 error_correction 的关系:版本越大能塞的数据越多,但也会让二维码变大;纠错等级越高,二维码被遮挡一部分后依然能扫出来,代价是同样尺寸下能存的数据变少。所以,如果你准备在二维码中心贴个 Logo,一定得用 ERROR_CORRECT_H,否则 Logo 一盖可能就读不出来了。

4. 高级用法

除了保存文件,qrcode 还能做很多灵活的事。比如在 Jupyter Notebook 里直接显示、把图片转为字节流供 Web 响应、甚至改颜色改形状。

生成二维码并直接显示(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.sa ve(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.sa ve("red_qrcode.png")

5. 注意事项

  • 网址长度:二维码的容量是有限的。如果网址太长,要么手动提高 version,要么先用短链接服务(比如 bit.ly)压缩一下。
  • 纠错等级:如果要在二维码中心添加 Logo,务必使用 ERROR_CORRECT_H,否则 Logo 一贴就废了。
  • 扫描测试:生成后一定用手机扫一下验证,别光看图片漂亮。

6. 完整示例:带 Logo 的二维码

把 Logo 贴在二维码中心是很多品牌运营的常规操作,既好看又保留了一部分识别能力。注意先把 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.sa ve("qrcode_with_logo.png")

到这里,从安装到定制、从基础到带 Logo 的完整流程就都覆盖了。以后遇到扫码需求,直接掏这段代码出来改改就能用上。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发 Python
相关文章 更多
langgraph python guide中文入门教程详解
langgraph python guide中文入门教程详解

本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

Windows 安装 Python:从官方入口到虚拟环境的可复现实践
Windows 安装 Python:从官方入口到虚拟环境的可复现实践

面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

Windows系统Python安装教程:下载、勾选PATH及环境变量配置
Windows系统Python安装教程:下载、勾选PATH及环境变量配置

针对Windows初学者的Python安装实战指南。详细讲解如何从Python官网下载匹配架构的安装包,重点演示安装首屏勾选“Add python.exe to PATH”的关键操作,并提供使用python --version和py命令验证环境变量的具体步骤,帮助新手快速搭建开发环境并排查路径问题。

Python安装后怎么打开:使用IDLE或命令行启动解释器
Python安装后怎么打开:使用IDLE或命令行启动解释器

刚在Windows安装好Python却不知道如何启动?本文详细演示如何通过开始菜单找到并打开IDLE集成开发环境,以及如何在PowerShell或命令提示符中使用python和py命令启动交互式解释器、运行.py脚本文件。包含退出解释器的方法及常见启动问题排查,帮助初学者快速验证安装成功并开始编写代码。

了解Python编程领域中最好的就业行业
了解Python编程领域中最好的就业行业

了解Python编程领域中最好的就业行业导语:近年来,Python作为一种易学易用的编程语言,越来越受到企业和开发者的青睐。在Python编程领域中,有许多就业机会,涵盖了各个行业。本文将介绍一些Python编程领域中最好的就业行业,并提供相应的代码示例。数据科学和机器学习数据科学和机器学习是Python编程领域中最热门的行业之一。Python在数据科学和机

python处理csv文件的方法完整实用教程
python处理csv文件的方法完整实用教程

针对Python处理CSV文件时常见的编码报错、内存溢出和数据类型错误,本文对比标准库csv与Pandas库的适用场景,提供可复制的代码示例和因果排查思路,帮助开发者选择最优处理方案。

python字典怎么按值排序用sorted函数实现升降序
python字典怎么按值排序用sorted函数实现升降序

本文介绍如何使用Python的sorted函数对字典按值进行升序和降序排序,结合具体代码示例和应用场景,帮助读者理解排序逻辑及其在数据处理中的实际价值。

python正则匹配修改方法与代码实现教程
python正则匹配修改方法与代码实现教程

深入讲解Python中使用re.sub进行正则匹配与替换的技巧,涵盖基础语法、分组引用及回调函数应用,帮助开发者解决复杂字符串修改需求,提升代码效率与可维护性。

selenium中文安装包下载与安装教程
selenium中文安装包下载与安装教程

详解Selenium在Python环境下的安装步骤,包括使用pip安装库文件、下载对应版本的浏览器驱动以及验证安装是否成功,适合自动化测试初学者参考。

skyvern官网入口及中文版使用教程
skyvern官网入口及中文版使用教程

Skyvern是一款基于大语言模型的开源浏览器自动化框架,目前仅提供英文界面且无官方中文版。本文指导用户通过GitHub获取源码,使用Docker快速部署本地环境,并解释其如何通过DOM树解析与自然语言指令实现网页自动操作,同时提供针对中文用户的配置建议与替代方案。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
Adobe Acrobat Pro macOS版
Adobe Acrobat Pro macOS版
Mac

Adobe Acrobat Pro 是面向办公、法务、财务、教育及出版用户的专业PDF处理软件,可在Mac上创建、编辑、转换、合并和保护文档,并提供OCR文字识别、表单、批注、内容比较、敏感信息遮盖及电子签名功能。

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

Shapr3D macOS版
Shapr3D macOS版
Mac

Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。

WINDOWS 更多
AutoCAD Windows版
AutoCAD Windows版
Windows

AutoCAD 是 Autodesk 推出的专业计算机辅助设计软件,Windows 版支持精确二维绘图、三维实体与曲面建模、图纸标注、布局发布和任务自动化,并包含多套行业专业化工具组合,适用于建筑、机械、电气、工程建设及制造设计人员。

Adobe Acrobat Pro Windows版
Adobe Acrobat Pro Windows版
Windows

Adobe Acrobat Pro 是面向专业 PDF 工作的综合解决方案,可在 Windows 中创建、编辑、转换、比较、整理和保护文档,并支持表单、电子签名、扫描件文字识别及敏感信息永久遮盖。订阅还包含网页、移动服务和云端协作能力,

Blender
Blender
Windows、macOS 和 Linux

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。