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

news2024/11/27 4:21:52


收录专栏: [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.coloradmin.cn/o/2201694.html

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

相关文章

史上最全JLInk调试Kevil指南||一篇就够了||从菜鸟到调试大佬

目录 写在前面 问题1:jlink的port选项有SW和JTAG,这两个有什么区别,为什么大多数情况下选SW? 1.配置reset and run,下載即可重启 2.寄存器 问题2:keil中debug调试中会出现register和value,register中包括R0&#…

QT入门教程攻略 QT入门游戏设计:贪吃蛇实现 QT全攻略心得总结

Qt游戏设计:贪吃蛇 游戏简介 贪吃蛇是一款经典的休闲益智类游戏,玩家通过控制蛇的移动来吃掉地图上的食物,使蛇的身体变长。随着游戏的进行,蛇的移动速度会逐渐加快,难度也随之增加。当蛇撞到墙壁或自己的身体时&…

LLM详解

一 定义 Large Language Model,称大规模语言模型或者大型语言模型,是一种基于大量数据训练的统计语言模型,可用于生成和翻译文本和其他内容,以及执行其他自然语言处理任务(NLP),通常基于深度神…

verilog端口使用注意事项

下图存在组合逻辑反馈环,即组合逻辑的输出反馈到输入(赋值的左右2边存在相同的信号),此种情况会造成系统不稳定。比如在data_in20的情况下,在data_out0 时候,输出的数据会反馈到输入,输入再输出,从而造成不…

深度学习常见问题

1.YOLOV5和YOLOV8的区别 YOLOv5 和 YOLOv8 是两个版本的 YOLO(You Only Look Once)目标检测算法,它们在网络架构、性能优化、功能扩展等方面有显著的区别。YOLOv5 是 YOLO 系列的重要改进版本,而 YOLOv8 是最新的一次重大升级&am…

【C++网络编程】(一)Linux平台下TCP客户/服务端程序

文章目录 Linux平台下TCP客户/服务端程序服务端客户端相关头文件介绍 Linux平台下TCP客户/服务端程序 图片来源:https://subingwen.cn/linux/socket/ 下面实现一个Linux平台下TCP客户/服务端程序:客户端向服务器发送:“你好,服务…

大数据-159 Apache Kylin 构建Cube 准备和测试数据

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

AI会计师——让AI+成就价值财务

摘要:用友携手CCTV-10联合策划《AI会计师》专题节目 目录 Part1 数智化凭证采集 Part2 智能月结 Part3 税务风险管控 Part1 数智化凭证采集 AI会计师,源自对大数据、人工智能、云计算等前沿技术的深度融合。它不仅仅是一款软件,更是企业智能…

Java 17 数组最全解读篇(3w字图文并茂)

小熊学Java:https://www.javaxiaobear.cn,包含了海量的面试题和Java学习资料,是一个全能学习的站点,强烈推荐!!! 1. 数组的概述 1.1 为什么需要数组 需求分析1: 需要统计某公司50…

探索远程控制下载工具的奇妙世界

远程控制技术为我们的生活和工作带来了极大的便利。比如协助他人解决电脑问题、远程办公等等。今天我们一同来探讨向日葵远程控制下载软件和其他远程控制软件的奇妙世界。 1.向日葵远程控制 链接直通车:https://down.oray.com 想必很多人都听说过这款软件的卓越声…

如何用AI两小时上线自己的小程序

ChatGPT这个轰动全球的产品自问世以来,已经过了将近2年的时间,各行各业的精英们如火如荼的将AI能力应用到自己生产的产品中来。 为分担人类的部分工作,AI还具有非常大的想象空间,例如对于一个程序员来说,使用AI生成快…

2024 全新视角:MBTI 报告 API 接口登场

MBTI(Myers-Briggs Type Indicator)是一种常用的心理学测量工具,通过分析个体在四个维度上的偏好,将人们分为16种不同的人格类型。随着人工智能和数据科学的快速发展,现在我们有了全新的方式来获取和分析MBTI报告&…

[考研数学]多元函数,向量函数,向量场辨析

参考视频:【【高等数学】多元函数,向量函数,向量场这些概念你能分得清吗?】 首先这几个都是映射 我们求的梯度就是多元函数里面的概念。 我们求的散度和旋度是向量场里面的概念。 多元函数多维到一维的意思是比如说输入一个点&am…

ChatGPT可以分析股票吗?

结合国庆前大A股市的小波牛市以及今天的股市表现,我从多个角度为你提供一些分析和建议: 一、国庆前的小波牛市分析 国庆前,大A股市出现了一波小幅上涨,市场呈现出一些积极的信号: 政策面利好:政府出台了…

A股知识答题pk小程序怎么做?

A股知识答题pk小程序怎么做?以下是制作A股知识答题PK小程序的一般步骤: 一、 需求分析与规划: 明确目标:确定小程序的主要目标,比如是为了帮助用户学习A股知识、进行趣味竞赛,还是作为金融教育工具等。 …

Python 如何使用 SQLAlchemy 进行复杂查询

Python 如何使用 SQLAlchemy 进行复杂查询 一、引言 SQLAlchemy 是 Python 生态系统中非常流行的数据库处理库,它提供了一种高效、简洁的方式与数据库进行交互。SQLAlchemy 是一个功能强大的数据库工具,支持结构化查询语言(SQL)…

Otter Wiki:用 Python 和 Markdown 搭建你的小型知识库,三步搞定!

你有没有想过,有没有一种工具可以轻松管理你的个人知识库,还不用费力学习复杂的操作系统?今天,我们来聊聊 Otter Wiki,一个由 Python、Markdown 和 Git 支撑的小型 Wiki 系统,让你能快速构建属于自己的知识管理工具,完全不需要依赖庞大的平台。 为什么选择 Otter Wi…

《向量数据库指南》深度解读:CLIP模型架构与Mlivus Cloud的向量数据库应用实践

在当今这个数据驱动的时代,向量数据库以其高效、灵活的特性,在AI应用、大数据处理等领域发挥着越来越重要的作用。作为大禹智库的向量数据库高级研究员,同时也是《向量数据库指南》的作者,我深知向量数据库技术的核心价值和未来发展潜力。今天,我们将一起深入探讨CLIP模型…

鸟哥的linux私房菜-基础篇-第四版

第六章 文件与目录 6.1 目录与路径 6.1.2 目录的相关操作 cd:变换目录pwd:显示当前目录mkdir:建立一个新的目录rmdir:删除一个空的目录 cd dmtsai 这个用户的家目录是/home/dmtsai/,而 root 家目录则是/root/&…

LEAP模型的低碳路径建模与温室气体核算方法!详细

LEAP 模型(Long-range Energy Alternatives Planning System),即低排放分析系统,是一个基于情景分析的自底向上的能源—环境核算工具,由斯德哥尔摩环境研究所与美国波士顿大学共同开发。LEAP拥有灵活的结构&#xff0c…