[Python] 使用Python自定义生成二维码


收录专栏: [Python]

二维码是现在非常常用的一种信息存储和传递方式,我们可以通过扫描二维码来快速获取文本、链接、联系方式等多种信息。在 Python 中,我们可以使用 qrcode 库轻松生成二维码,并通过一些自定义样式让它变得更加个性化。

本文将详细介绍如何使用 Python 的 qrcode 库生成各种样式的二维码,并提供相关的代码示例和讲解。


目录

  1. 安装 qrcode 库
  2. 生成简单的二维码
  3. 生成自定义样式的二维码
  4. 生成带有链接的二维码
  5. 可莉的小创作

安装 qrcode 库

在生成二维码之前,我们首先需要安装 qrcode 库。你可以通过以下命令在终端或命令行中安装它:

pip install qrcode[pil]

注意:[pil] 是为了确保你同时安装了 Pillow 库,这是处理图像的必需库。

安装成功后,我们就可以开始使用 qrcode 生成二维码了。


生成简单的二维码

首先,我们先来看一下如何生成一个最基础的二维码。在这个例子中,我们将生成一个简单的二维码,并保存为图片文件。

import qrcode# 生成简单的二维码
img = qrcode.make('you are a pig.')
# 保存生成的二维码
img.save('test.png')

代码讲解

  • qrcode.make('you are a pig.'):使用 qrcode.make() 方法,直接生成了一个包含文本的二维码,文本内容是 "you are a pig"
  • img.save('test.png'):将生成的二维码图片保存为 test.png 文件。

生成的二维码将包含指定的文本信息,用户扫描二维码后可以看到 "you are a pig"


生成自定义样式的二维码

在生成二维码时,我们可以自定义二维码的样式,比如调整二维码的大小、设置不同的容错等级,甚至在二维码上嵌入 Logo 图像。下面是一个更加复杂的例子:

import qrcode
from PIL import Image# 定义要生成二维码的内容
data = "Hello, World!"# 创建QRCode对象并自定义设置
qr = qrcode.QRCode(version=1,  # 设置二维码的版本error_correction=qrcode.constants.ERROR_CORRECT_H,  # 设置错误纠正等级box_size=10,  # 每个小格子的大小border=4,  # 边框的宽度
)# 将数据添加到QRCode对象中
qr.add_data(data)
qr.make(fit=True)# 生成二维码图像并设置前景色和背景色
img = qr.make_image(fill_color="black", back_color="white")# 打开一个Logo图片并将其粘贴到二维码上
logo = Image.open("logo.png")# 获取二维码的尺寸
img_width, img_height = img.size
logo = logo.resize((img_width // 5, img_height // 5))  # 调整Logo的大小
logo_position = ((img_width - logo.size[0]) // 2, (img_height - logo.size[1]) // 2)# 将Logo粘贴到二维码的中央
img.paste(logo, logo_position)# 保存生成的二维码图像
img.save("custom_qrcode.png")# 显示生成的二维码图像
img.show()

代码讲解

  1. QRCode 对象的创建
    • version=1:指定二维码的大小,值越大,二维码的尺寸越大。version 取值范围为 1 到 40。
    • error_correction=qrcode.constants.ERROR_CORRECT_H:设置二维码的容错率,ERROR_CORRECT_H 表示最高等级,可以纠正约 30% 的错误。
    • box_size=10:设置二维码中每个小方格的大小,值越大,二维码越大。
    • border=4:设置二维码边框的厚度。
  2. 生成二维码
    • qr.add_data(data):将数据添加到 QRCode 对象中。
    • qr.make(fit=True):自动调整二维码大小以适应数据。
  3. 自定义图像
    • img.paste(logo, logo_position):将 Logo 粘贴到二维码的中间。

最终生成的二维码将包含指定内容,并嵌入一个 Logo 图像。你可以根据需要自定义前景色和背景色。


生成带有链接的二维码

二维码最常见的用法之一是将 URL 嵌入到二维码中,扫描二维码后可以自动跳转到某个网页。以下是如何生成带有链接的二维码:

import qrcode# 定义要生成二维码的链接
link = "https://www.example.com"# 创建QRCode对象
qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_Q,  # 设置错误纠正等级为 Q (约25%可修复)box_size=10,border=4,
)# 将链接添加到QRCode对象中
qr.add_data(link)
qr.make(fit=True)# 生成二维码图像
img = qr.make_image(fill_color="black", back_color="white")# 保存二维码
img.save("link_qrcode.png")# 显示二维码
img.show()

代码讲解

  • 链接嵌入:将 "https://www.example.com" 作为数据添加到二维码中,生成的二维码会包含该链接,用户扫描后会自动跳转到该网站。
  • 容错率设置ERROR_CORRECT_Q 设置二维码的容错率为 Q 级(约 25% 容错能力),即使二维码部分损坏,也可以正常读取链接。

Demo

接下来是一个创意实现,生成一个包含个人名片信息的二维码。我们将通过生成的二维码传递个人名片信息,如姓名、邮箱、电话等。

代码实现

import qrcode# 定义个人名片信息
vcard_data = """BEGIN:VCARD
VERSION:3.0
FN:Alice Smith
TEL:+1234567890
EMAIL:alice@example.com
END:VCARD"""# 创建QRCode对象
qr = qrcode.QRCode(version=2,error_correction=qrcode.constants.ERROR_CORRECT_M,  # 容错率中等box_size=10,border=4,
)# 将个人名片信息添加到QRCode对象中
qr.add_data(vcard_data)
qr.make(fit=True)# 生成二维码图像
img = qr.make_image(fill_color="black", back_color="white")# 保存二维码
img.save("vcard_qrcode.png")# 显示二维码
img.show()

代码讲解

  • 个人名片信息:我们使用 vCard 格式嵌入名片信息,名片信息包括姓名(FN)、电话号码(TEL)和电子邮件(EMAIL)。
  • 生成二维码:二维码生成后,用户扫描该二维码时,可以快速保存名片信息到手机中。

总结

通过本文的学习,你应该掌握了如何使用 Python 的 qrcode 库生成各种二维码,包括简单的文本二维码、带有自定义样式和 Logo 的二维码,以及嵌入链接或名片信息的二维码。

生成二维码的过程非常简单,qrcode 库提供了强大的功能,可以轻松自定义二维码的大小、容错率、颜色等。同时,你还可以使用 Pillow 库在二维码中嵌入 Logo 图像,使二维码更加个性化。

通过本文中的代码示例,你可以生成自己的二维码并将其应用到日常开发中。无论是分享网址、嵌入名片信息还是创建个性化二维码,你都可以轻松实现。

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

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

相关文章

论文精读之Label-Augmented Dataset Distillation (LADD)标签增强数据集蒸馏

[TOC](论文精度之Label-Augmented Dataset Distillation (LADD)标签增强数据集蒸馏) 0.前言 现在开始要不断培养我自身的阅读论文的能力,我的方法不一定是对的,但是不犯错的前提就在于要先犯错,提早去培养自己该方面的能力,其实很早之前就了解到了一些论文学习的方法,但自己总…

C++学习笔记(52)

345、封装 socket 一、demo7.cpp /* * 程序名&#xff1a;demo7.cpp&#xff0c;此程序用于演示封装 socket 通讯的客户端 */ #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <unistd.h> #include <…

DHASH感知算法计算视频相邻帧的相似度

一个朋友想用python来读取视频帧&#xff0c;根据帧和帧之间相似度判断剪辑痕迹&#xff1b;但是最后发现并没什么用…… 原理就是遍历地读取图像相邻帧&#xff0c;将图像相邻帧前处理后&#xff0c;缩小什么的&#xff0c;计算d_hash,然后计算其汉明距离&#xff0c;然后把汉…

webstorm的缩进设置(过度缩进解释)

在编写前端代码时 缩进规范一般被认为是2个空格 而非默认的4个空格 当我们通过webstorm去编写前端代码时 我们可以通过setting->Code Style->html/css/js指定的界面中去设置tab/indent/continuation indent 具体的话 我们将html/css/js操作界面中的tab/indent设置为2个空…

LEED绿色建筑认证

LEED&#xff08;Leadership in Energy and Environmental Design&#xff09;绿色建筑评估体系是由美国绿色建筑协会&#xff08;USGBC&#xff09;建立并推行的一项权威评估标准。 一、LEED体系概述 LEED体系是目前在世界各国的各类建筑环保评估、绿色建筑评估以及建筑可持…

Redis 5 种基本数据类型的前两个详解

Redis 共有 5 种基本数据类型&#xff1a;String&#xff08;字符串&#xff09;、List&#xff08;列表&#xff09;、Set&#xff08;集合&#xff09;、Hash&#xff08;散列&#xff09;、Zset&#xff08;有序集合&#xff09;。 这 5 种数据类型是直接提供给用户使用的&…

提交gitlab

1.gitlab上新建项目 2.git clone url把新项目拉下来 3.git add ./* 把需要提交的文件全部新增 4.git config --global user.email “yetuo.zhuqxsk.local” 身份认证一下 5.git commit -m “asr语音识别-对外服务” 提交 6.git push origin 推送进去 git init git add . git c…

SAP ABAP 代码搜索工具 CODE_SCANNER

SAP ABAP 代码搜索工具 CODE_SCANNER 作为一个熟练的 ABAP 经常要查一下某个function有没有被别的程序调用&#xff0c;或者查看某个function在参考别的程序的调用方法。这就会经常用到 CODE_SCANNER 这个TCODE。 例子一&#xff1a;例如查询 某个smartform 被哪个程序调用了&…

网页打不开、找不到服务器IP地址

现象&#xff1a;网络连接ok&#xff0c;软件能正常使用&#xff0c;当网页打不开。 原因&#xff1a;DNS 配置错误导致网站域名无法正确解析造成。 影响DNS设置的&#xff1a;VPN软件、浏览器DNS服务选择、IPv4属性被修改。 1、VPN代理未关闭 2、浏览器DNS解析选择 3、以太…

【韩顺平Java笔记】第8章:面向对象编程(中级部分)【285-296】

文章目录 285. 为什么需要继承286. 继承原理图287. 继承快速入门288. 289. 290. 291. 292. 继承使用细节1,2,3,4,5288.1 继承给编程带来的便利288.2 继承的深入讨论/细节问题 293. 继承本质详解294. 继承课堂练习1295. 继承课堂练习2296. 继承课堂练习3 285. 为什么需要继承 28…

同城O2O系统源码与跑腿配送平台的架构设计与开发方案详解

今天&#xff0c;笔者将与您一同深入探讨同城O2O系统的源码及跑腿配送平台的架构设计与开发方案&#xff0c;助力开发者和企业在这一领域的实践与探索。 一、O2O系统概述 在同城O2O模式中&#xff0c;用户可以通过手机应用或网页平台下单&#xff0c;而配送员则根据订单信息迅…

[图形学]smallpt代码详解(1)

一、简介 本文介绍了著名的99行代码实现全局光照的光线跟踪代码smallpt。 包括对smallpt的功能介绍、编译运行介绍&#xff0c;和对代码的详细解释。希望能够帮助读者更进一步的理解光线跟踪。 二、smallpt介绍 1.smallpt是什么 smallpt(small Path Tracing) 是一个全局光照…

鸿蒙NEXT开始公测,哪些机型可以升级?鸿蒙版微信界面简洁

华为 Harmony OS NEXT 于10月8日正式开启公测&#xff0c;对鸿蒙 NEXT 系统感兴趣&#xff0c;想要第一时间尝鲜鸿蒙系统的话&#xff0c;千万不要错过本篇文章&#xff01; 哪些手机可以参与鸿蒙 NEXT 公测&#xff1f; 首批参与鸿蒙 NEXT 公测的机型有华为 Mate 60 系列、华…

Electron构建桌面应用程序,服务于项目的自主学习记录(持续更新...

无所畏惧地面对未知&#xff0c;并将其视为成长的机会 大纲官网快速入门1.安装node.js -- 这里推荐用nvm管理2.脚手架创建3.electron 包安装到应用的开发依赖4.创建主进程(main.js)并启动项目1.创建页面2.配置main.js3.启动项目 -- 效果 进阶 -- 基于项目场景功能使用场景一&am…

Java8新特性, 函数式编程及Stream流用法大全

用了多少年的java8了&#xff0c;Lambda表达式和stream流也经常用&#xff0c;但是也仅限于某些用法比较熟练&#xff0c;看见了 Function、Consumer 等函数式接口还是一脸懵逼&#xff0c;现在来全面总结一下java8这些新特性&#xff0c;也为自己后续查找做个备忘。如果你只是…

【C++】模板(初识):函数模板、类模板

本篇主要介绍C中的模板初阶的一些知识。模板分为函数模板和类模板&#xff0c;我们一个一个来看。 1.函数模板 1.1函数模板概念 函数模板代表了一个函数家族&#xff0c;该函数模板与类型无关&#xff0c;在使用时被参数化&#xff0c;根据实际的参数类型产生函数特定版本。…

Golang

Golang&#xff0c;通常被称为Go&#xff0c;是由Google开发的一种开源编程语言。它最早由Robert Griesemer、Rob Pike和Ken Thompson在2007年设计并于2009年发布。Golang的设计目标是提高编写简单、高效和并发程序的能力&#xff0c;因此非常适合用于构建高并发的网络服务、分…

滚雪球学MySQL[4.4讲]:数据库的性能调优详解

全文目录&#xff1a; 前言1. 数据库性能调优的重要性2. 数据库性能调优策略2.1 索引优化2.1.1 创建合适的索引示例&#xff1a;创建单列索引和联合索引 2.1.2 避免过度索引2.1.3 使用覆盖索引示例&#xff1a;覆盖索引 2.2 查询优化2.2.1 使用EXPLAIN分析查询示例&#xff1a;…

C++:图的最短路径问题

一、简介 在非网图中&#xff0c;最短路径是指两顶点之间经历的边数最少的路径。在网图中&#xff0c;最短路径是指两顶点之间经历的边上权值之和最少的路径。 路径上的第一个顶点称为源点&#xff0c;最后一个顶点称为终点。 最短路径问题是图的一个比较典型的应用问题。例如&…

QT 通过鼠标事件实现图片的拖动和缩放

通过鼠标拖动来移动图片&#xff0c;并使用鼠标滚轮来缩放图片。 1、实现步骤&#xff1a; 1、移动图片&#xff1a; 使用QPoint记录图片的偏移量&#xff0c;当鼠标拖动时更新这个偏移量&#xff0c;在paintEvent()中根据偏移量绘制图片。2、缩放图片&#xff1a; 使用滚轮…