【python】如何用python代码快速生成二维码

news2024/9/23 3:11:34

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,PyQt5和Tkinter桌面开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生K8S,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:python综合应用,基础语法到高阶实战教学
景天的主页:景天科技苑

在这里插入图片描述

文章目录

  • Python生成二维码
    • 环境准备
    • qrcode库基础
      • 基本用法
      • 定制二维码
      • 批量生成二维码
    • 实际应用案例
      • 案例一:生成个人名片二维码
      • 案例二:生成支付二维码
      • 案例三:动态生成二维码
    • 总结

Python生成二维码

二维码(QR Code)作为一种快速响应码,因其高效的信息存储和便捷的扫描方式,在现代生活中得到了广泛应用。无论是商品包装、广告宣传、移动支付还是个人名片,二维码都扮演着重要角色。Python作为一门功能强大的编程语言,通过其丰富的第三方库,可以轻松实现二维码的生成。本教程将结合实际案例,详细介绍在Python中生成二维码的详细步骤和用法。

环境准备

在开始之前,请确保你的Python环境已经安装好。Python的官方网站提供了详细的安装指南。此外,为了生成二维码,我们将使用qrcodePillow(PIL的更新版)这两个第三方库。如果你的环境中还没有安装这些库,可以通过pip命令进行安装:

pip install qrcode[pil]

注意:qrcode库在安装时,可以通过指定[pil]选项来同时安装Pillow库,因为Pillow库用于处理图像,是生成二维码图片所必需的。
在这里插入图片描述

qrcode库基础

qrcode库是Python中用于生成二维码的流行库之一。它提供了丰富的API来定制二维码的样式、大小、边框等属性。

基本用法

首先,我们来看一个简单的例子,展示如何使用qrcode库生成一个基本的二维码:

import qrcode

# 创建一个QRCode对象
qr = qrcode.QRCode(
    version=1,  # 二维码的版本号,1-40,数字越大,二维码尺寸越大,存储的信息越多
    error_correction=qrcode.constants.ERROR_CORRECT_L,  # 容错率,L、M、Q、H四个等级,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")
img.save("example_qrcode.png")

在这个例子中,我们创建了一个QRCode对象,并通过add_data方法添加了要编码的URL。然后,使用make_image方法生成二维码图像,并指定了填充色和背景色。最后,使用Pillow库的save方法将图像保存到文件中。
在这里插入图片描述

定制二维码

qrcode库提供了多种方式来定制二维码的外观,包括颜色、边框、版本和容错率等。

  • 颜色:如上例所示,make_image方法允许你指定填充色(fill_color)和背景色(back_color)。
  • 边框:在创建QRCode对象时,可以通过border参数设置边框宽度。
  • 版本和容错率version参数控制二维码的尺寸(1-40),而error_correction参数则决定了二维码的容错率(L、M、Q、H)。容错率越高,二维码在受损时仍能被正确扫描的可能性就越大,但也会增加二维码的尺寸。

批量生成二维码

在实际应用中,我们可能需要批量生成多个二维码。这可以通过循环遍历数据列表,并对每个数据项调用上述生成二维码的代码来实现。

import qrcode

# 数据列表
urls = [
    'https://www.example.com',
    'https://www.google.com',
    'https://www.facebook.com'
]

# 遍历数据列表,生成二维码
for i, url in enumerate(urls):
    qr = qrcode.QRCode(
        version=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(f"qrcode_{i+1}.png")

实际应用案例

案例一:生成个人名片二维码

假设你想生成一个包含个人信息的二维码名片,以便他人扫描后能快速获取你的联系方式。你可以将个人信息(如姓名、电话、邮箱等)编码为一个URL(例如,使用mailto:协议或自定义的URL Scheme),然后生成二维码。

import qrcode

# 个人信息URL
info_url = "mailto:yourname@example.com?subject=Hello%20from%20my%20QR%20Code"

# 生成二维码
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
qr.add_data(info_url)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save("personal_card_qrcode.png")

案例二:生成支付二维码

在移动支付领域,二维码被广泛应用。假设你是一名商家,想要生成一个支付二维码供顾客扫描支付。这通常涉及到与支付服务提供商的API集成,但在这里,我们仅展示如何生成一个包含支付信息的二维码。

import qrcode

# 假设的支付信息URL(实际使用时,应替换为支付服务提供商提供的URL)
payment_url = "https://payment.example.com/pay?merchant_id=123456&amount=100.00"

# 生成二维码
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
qr.add_data(payment_url)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save("payment_qrcode.png")

注意:在实际应用中,支付二维码的生成通常涉及与支付服务提供商的API交互,以获取包含支付信息的URL。

案例三:动态生成二维码

在某些场景下,你可能需要根据用户输入或数据库中的信息动态生成二维码。这可以通过将用户输入或数据库查询结果作为数据传递给add_data方法来实现。

import qrcode

# 假设这是从用户输入或数据库查询中获取的数据
dynamic_data = "https://www.example.com/dynamic/page?id=12345"

# 动态生成二维码
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
qr.add_data(dynamic_data)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")

# 这里不直接保存,而是返回图像对象(例如,在Web应用中发送到前端)
# 或者,你也可以根据需要将图像保存到文件或数据库中
# img.save("dynamic_qrcode.png")

总结

通过本教程,我们详细介绍了在Python中使用qrcode库生成二维码的详细步骤和用法。从基础用法到定制二维码,再到实际应用案例,我们展示了二维码生成的多种可能性和应用场景。希望这些信息能帮助你更好地理解和使用Python中的二维码生成功能。如果你有任何问题或需要进一步的信息,请随时查阅qrcode库的官方文档或参与相关社区讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101417.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法思想·二叉树】思路篇

本文参考labuladong算法笔记[东哥带你刷二叉树(思路篇) | labuladong 的算法笔记] 本文承接 【算法思想二叉树】纲领篇,先复述一下前文总结的二叉树解题总纲: 二叉树解题的思维模式分两类: 1、是否可以通过遍历一遍二…

数据结构——单链表相关操作

zhuzhu1、结构框图: 2、增删改查: 定义链表节点和对象类型 /*************************************************************************> File Name: link.h> Author: yas> Mail: rage_yashotmail.com> Created Time: Tue 03 Sep 2024…

ServiceStage集成Sermant实现应用的优雅上下线

作者:聂子雄 华为云高级软件工程师 摘要 优雅上下线旨在确保服务在进行上下线操作时,能够平滑过渡,避免对业务造成影响,保证资源的高效利用。Sermant基于字节码增强的技术实现了应用优雅上下线能力,应用发布与运维平…

摩博会倒计时!OneOS操作系统抢先了解!

2024年第二十二届中国国际摩托车博览会(摩博会)临近,中移物联OneOS与智能硬件领域佼佼者恒石智能宣布强强合作,与9月13日至16日在重庆国家会展中心共同展现多款Model系列芯片(Model3、Model4、Model3C、Model3A&#x…

I2C软件模拟时序的基本要素

目录 前言 一、关于I2C 二、正文 1.引脚的配置 2.I2C的起始和终止时序 3.发送一个字节 4.接收一个字节 5.应答信号 6.指定地址写和指定地址读 总结 前言 环境: 芯片:STM32F103C8T6 Keil:V5.24.2.0 本文主要参考江科大教程&#…

系统架构师考试学习笔记第三篇——架构设计高级知识(11)软件可靠性基础知识

本章知识点: 第11课时主要学习软件可靠性基本概念、建模、管理、设计、测试和评价等内容。本课时内容侧重于概念知识,根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,考查的知识点多来源于教材,扩展内容较少。根据考试大纲,本课时知识点会涉及单项选…

注册安全分析报告:央视网

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

day47——面向对象特征之继承

一、继承(inhert) 面向对象三大特征:封装、继承、多态 继承:所谓继承,是类与类之间的关系。就是基于一个已有的类,来创建出一个新类的过程叫做继承。主要提高代码的复用性。 1.1 继承的作用 1> 实现…

16、修改Markdown Preview Enhanced默认样式

前言 vscode的markdown preview enhanced插件的主题并不一定符合每个人的审美,所以有的时候需要自定义,笔者根据网上大佬的文章整合了下自定义修改Markdown Preview Enhanced默认样式的方法,模板在文章中,大家可以直接使用,希望能…

【数据结构】反射,枚举你必须知道的相关知识

前言: 🌟🌟本期讲解关于反射以及枚举,希望能帮到屏幕前的你。 🌈上期博客在这里:http://t.csdnimg.cn/7D225 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 目录 &#x1f…

获得并修改硬件序列号--CPU、主板、内存、硬盘等(有源码)

大家都知道很多Anti Cheat会封硬件序列号,所以本文探索一下如何get and modify序列号。 这个服务是比较贵的: 于是有了研究一下的想法。 思路: 1. 通过厂商自带的程序刷新固件。 2. 自己写驱动修改。 思路1不讨论,要拿到厂商去修改,很不方…

台球助教陪练预约系统源码开发

随着科技的发展和人们对生活质量要求的提高,体育运动的数字化趋势日益明显。台球作为一种集休闲娱乐与竞技于一体的运动项目,在全球范围内拥有广泛的爱好者群体。为了更好地满足这部分人群的需求,开发一个高效的台球助教陪练预约系统变得尤为…

国家超算互联网入选国家数据局“全国一体化算力网应用优秀案例”

在2024年8月29日举行的中国国际大数据产业博览会上,国家数据局公布了首批“全国一体化算力网应用优秀案例”。 这一举措是在经过严格的评审过程后,挑选了包括“国家超算互联网”在内的25个创新平台和方案,它们代表了当前算力网建设的先进与创…

【ssh】环境问题汇总

问题1.同时显示两个不同的 Conda 环境,如图 (base) 环境 是 Conda 安装后默认激活的环境。 (ani) 是手动创建的另一个 Conda 环境。 解决:执行conda deactivate。如果 (ani) 环境多次激活,需要多次执行 conda deactivate 才能回到 base 环境…

【论文分享】sNPU: Trusted Execution Environments on Integrated NPUs 24‘ISCA

目录 AbstractINTRODUCTIONBACKGROUND AND RELATED WORKTrusted Execution Environment (TEE)Neural Processing Unit (NPU)Integrated NPU v.s. Discrete NPU Multi-tasking Requirements for NPUsLow NPU utilization for a single ML workloadSimultaneous execution of bot…

jquery swiper插件的用法

一、Swiper插件简介 Swiper是一个纯JavaScript打造的滑动特效插件,面向手机、平板电脑等移动终端,同时也支持桌面浏览器。Swiper开源、免费、稳定、使用简单且功能强大,是架构移动终端网站的重要选择。 它支持触摸滑动、响应式设计、循环滑动…

基于Java+SpringBoot+Vue+MySQL的地方美食分享网站

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的地方美食分享网站【附源码文档】、前后…

NXP i.MX8系列平台开发讲解 - 4.1.3 GPSD 使用

专栏文章目录传送门:返回专栏目录 Hi, 我是你们的老朋友,主要专注于嵌入式软件开发,有兴趣不要忘记点击关注【码思途远】 文章目录 关注星号公众号,不容错过精彩 作者:HywelStar 目录 1. 认识GPSD 2. 安装GPSD 2.…

哪些好用的待办事项清单值得推荐:待办任务清单app

在现代快节奏的生活中,我们每个人都面临着大量的待办事项。无论是工作中的紧急任务,还是生活中的琐碎事务,这些事情常常让我们感到应接不暇。为了更好地管理这些待办事项,将它们列成清单,并设置明确的完成时间节点&…

2024年9月3日嵌入式学习

数据结构 1定义 一组用来保存一种或者多种特定关系的数据的集合(组织和存储数据) 程序的设计:将现实中大量而复杂的问题以特定的数据类型和特定的存储结构存储在内存中, 并在此基础上实现某个特定的功能的操作&am…