使用Python创建和扫描二维码

news2024/11/15 13:00:25

二维码(Quick Response code)已成为在物理和数字领域之间架起桥梁的多功能工具。从分享联系信息和网站链接到促进支付和跟踪库存,二维码在各个行业中找到了应用。通过利用Python的功能,用户可以自动化生成个性化的二维码,或者在项目中集成扫描功能,从而提高效率和用户参与度。本文将展示如何使用Python自动化创建和扫描二维码

  • 使用Python创建二维码
  • 使用Python扫描二维码

本文中使用的方法需要Spire.Barcode for Python,PyPI:pip install Spire.Barcode

申请免费License

使用Python创建二维码

BarcodeSettings类可用于配置生成条形码的设置。这些设置包括条形码类型、要编码的数据、颜色、边距以及水平和垂直分辨率。
完成这些设置后,我们可以使用这些配置创建一个BarcodeGenerator实例。随后,我们可以调用生成器的GenerateImage()方法来生成条形码图像。
步骤如下:

  1. 导入BarcodeSettingsBarCodeTypeQRCodeECLBarCodeGenerator模块。
  2. 创建一个BarcodeSettings对象。
  3. 使用BarcodeSettings.Type属性将条形码类型设置为二维码。
  4. 使用BarcodeSettings.Data2D属性设置二维条形码的数据。
  5. 使用BarcodeSettings对象下的属性设置条形码的其他属性。
  6. 基于这些设置创建一个BarCodeGenerator对象。
  7. 使用BarCodeGenerator.GenerateImage()方法创建二维码图像。

代码示例

from spire.barcode import BarcodeSettings, BarCodeType, QRCodeECL, BarCodeGenerator

# 将所有字节写入文件
def WriteAllBytes(fname: str, data):
    with open(fname, "wb") as fp:
        fp.write(data)
    fp.close()

# 创建 BarcodeSettings 对象
barcodeSettings = BarcodeSettings()

# 设置条形码类型为 QR 码
barcodeSettings.Type = BarCodeType.QRCode

# 设置 2D 条形码的数据
barcodeSettings.Data2D = "Hello, World"

# 设置边距
barcodeSettings.LeftMargin = 0.2
barcodeSettings.RightMargin = 0.2
barcodeSettings.TopMargin = 0.2
barcodeSettings.BottomMargin = 0.2

# 设置水平分辨率
barcodeSettings.DpiX = 500

# 设置垂直分辨率
barcodeSettings.DpiY = 500

# 设置纠错级别
barcodeSettings.QRCodeECL = QRCodeECL.M

# 不在条形码上显示文本
barcodeSettings.ShowText = False

# 在 QR 码的中心添加 logo
barcodeSettings.SetQRCodeLogoImage("PDF.png")

# 使用指定的设置创建 BarCodeGenerator 实例
barCodeGenerator = BarCodeGenerator(barcodeSettings)

# 生成条形码图像
image = barCodeGenerator.GenerateImage()

# 将 PNG 图像写入磁盘
WriteAllBytes("output/QR-Code.png", image)

生成结果
Python创建二维码

使用Python扫描二维码

库中的BarcodeScanner类用于条形码图像识别。这个类提供了几种从条形码中提取数据的方法,包括:

  • ScanOneFile(): 扫描单个条形码图像文件并返回提取的数据。
  • ScanFile(): 扫描指定图像文件中的所有条形码并返回提取的数据。
  • ScanStream(): 从图像数据流中扫描条形码并返回提取的信息。

以下代码演示了如何使用它扫描二维码图像。

扫描二维码的步骤如下(扫描二维码需要应用License):

  1. 导入BarcodeScanner模块。
  2. 使用BarcodeScanner.ScanOneFile()方法扫描包含一个二维码的图像,或者使用BarcodeScanner.ScanFile()方法扫描包含多个二维码的图像。
  3. 保存扫描结果到文本文件。

代码示例

from spire.barcode import BarcodeScanner

License.SetLicenseKey("license key")

# 扫描包含一个条形码的图像文件
result = BarcodeScanner.ScanOneFile("output/QR-Code.png")

# 扫描包含多个条形码的图像文件
# results = BarcodeScanner.ScanFile("QR-Codes.png")

# 将扫描结果保存到文本文件
with open("output/QR-Code.txt", "w", encoding="utf-8") as f:
    f.write(result)

扫描结果
Python扫描二维码

本文展示了如何使用Python创建和扫描二维码。

有关更多二维码处理技巧,请访问Spire.Barcode for Python教程。

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

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

相关文章

基于SpringBoot+Vue的财务管理系统(带1w+文档)

基于SpringBootVue的财务管理系统(带1w文档) 基于SpringBootVue的财务管理系统(带1w文档) 财务管理系统的开发运用java技术、springboot框架,MIS的总体思想,以及Mysql等技术的支持下共同完成了该系统的开发,实现了财务管理的信息化&#xff0…

C语言函数:编程世界的魔法钥匙(2)-学习笔记

引言 注:由于这部分内容比较抽象,而小编我又是一个刚刚进入编程世界的计算机小白,所以我的介绍可能会有点让人啼笑皆非。希望大家多多包涵!万分感谢!待到小编我学有所成,一定会把这块知识点重新介绍一遍&a…

VB利用API调用系统的通用颜色对话框

Option Explicit 在窗体上添加一个Command1按钮控件 Private Type ChooseColor lStructSize As Long hwndOwner As Long hInstance As Long rgbResult As Long lpCustColors As String Flags As Long lCustData As Long lpfnHook As Long lpTemplateName As String End Type 该…

pcie拓扑结构与层次结构

一 拓扑结构 PCIE 总线与总线共享式通讯方式的 PCI 不同,PCIE 由点到点的链路组成,并采用树形拓扑结构PCIE 拓扑结构体系由 CPU、根复合体(RootComplex,RC)、端点设备(Endpoint,EP)…

Python入门------pycharm加载虚拟环境

pycharm虚拟环境配置: 在按照前面的办法,配置好虚拟环境后,如果我们需要到虚拟环境开发,就需要给编译器配置虚拟环境 1.打开编译器,点击右下角的interpreter选项 2. 点击ADD Interpreter,添加虚拟环境 3. 因为我们使用的是原始…

【LeetCode】二叉树的最大深度

目录 一、题目二、解法完整代码 一、题目 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3 示例 2&#x…

vue2学习笔记9 - 通过观察vue实例中的data,理解Vue中的数据代理

接着上一节,学一学vue中的数据代理。学vue这几天,最大的感受就是,名词众多,听得发懵。。不过,深入理解之后,其实说得都是一回事。 在Vue中,数据代理是指在实例化Vue对象时,将data对…

【C++高阶】精通AVL树:全面剖析与深度学习

目录 🚀 前言一: 🔥 AVL树的性质二: 🔥 AVL树节点的定义三: 🔥 AVL树的插入四: 🔥 AVL树的平衡调整(附动图) 五:🔥 AVL树的…

防御保护课-防火墙接口配置实验

一、实验拓扑 (我做实验用的图如下) 二、实验要求 1.防火墙向下使用子接口分别对应生产区和办公区 2.所有分区设备可以ping通网关 三、实验思路 配IP; 划分vlan并配置vlan; 配置路由和安全策略。 四、实验配置 1、画图并…

C++与lua联合编程

C与lua联合编程 一、环境配置二、lua基本语法1.第一个lua和C程序2.基本数据类型和变量2.1 Nil2.2 Booleans2.3 Numbers2.4 String(最常用) 3. 字符串处理3.1 错误处理3.2 字符串长度:string.len3.3 字符串子串 :string.sub3.4 字符串查找: string.find3.5字符串替换: string.gs…

Evil-WinRM一键测试主机安全情况(KALI工具系列四十四)

目录 1、KALI LINUX 简介 2、Evil-WinRM 3、信息收集 3.1 目标IP 3.2 kali的IP 4、操作步骤 4.1 用户访问 4.2 使用哈希值 4.3 文件处理 5、总结 1、KALI LINUX 简介 Kali Linux 是一个功能强大、多才多艺的 Linux 发行版 ,广泛用于网络安全社区。它具有全…

swiftui使用ScrollView实现左右滑动和上下滑动的效果,仿小红书页面

实现的效果如果所示,顶部的关注用户列表可以左右滑动,中间的内容区域是可以上下滚动的效果,点击顶部的toolbar也可以切换关注/发现/附近不同页面,实现翻页效果。 首页布局 这里使用了NavigationStack组件和tabViewStyle样式配置…

在项目服务器部署git 并实现自动提交

以下场景适合在服务器当中使用git 方便提交代码,同时不需要外部的git仓库(码云gitee或者github作为管理平台)。依靠服务器本身ssh 连接协议做为git提交的地址,同时利用钩子自动同步项目代码 首先下载git sudo apt update sudo a…

Linux最直观的性能分析(热点分析)-编译perf并生成火焰图

本文先介绍了linux下perf工具的使用场景,然后对命令行安装和源码编译安装两种方式做了说明,接下来通过最简单的perf top命令给出perf的直观印象,最后通过perf record生成火焰图的方式说明如何发现进程中的函数热点。 一、perf工具介绍 per…

00 JavaWeb

学习资料:B站视频-黑马程序员JavaWeb基础教程 文章目录 JavaWeb1、JavaWeb简介2、 JavaWeb主要内容3、JavaWeb技术栈4、JavaWeb课程安排5、Web核心课程安排 JavaWeb 1、JavaWeb简介 Web:全球广域网,也称为万维网(www),能够通过浏…

C++: 链表回文结构/分割链表题解

目录 1.链表的回文结构 分析 代码 2.链表分割 ​编辑分析 代码 1.链表的回文结构 分析 这道题的难点是空间复杂度为O(1) 结合逆置链表找到链表的中间节点就可以解决了。 先找到链表的中间节点,再对中间节点的下一个节点进行逆置&…

macbook pro大模型推理

安装与配置 参考github ollama 链接安装ollama。安装完成后,安装常用的模型,下载速度超快。 性能测试 在进行实际测试之前,我首先对模型进行了预处理,以确保其在 M3 Max 上能够高效运行。测试过程中,我主要关注了以下几个方面: 模型加载时间 加载大型模型通常需要较…

Python WebUIAPI:打造交互式Web界面的利器

Python WebUIAPI:打造交互式Web界面的利器 引言:交互式Web界面的革新 在当今快速发展的互联网时代,Web界面的交互性已成为衡量用户体验的重要标准。Python作为一门流行的编程语言,其生态中涌现出许多强大的库来帮助开发者构建交互…

组队学习——贝叶斯分类器

前言 本次数据继续沿用上一次主题的【组队学习——支持向量机-CSDN博客】 数据处理部分延续【组队学习——支持向量机】主题的处理办法对应划分训练集和验证集 模型选择 本次贝叶斯分类器模型的较多,常用的为高斯朴素贝叶斯分类器、多项式朴素贝叶斯分类器、伯努…

2024年超好用的4款PDF阅读器推荐

PDF文件已经是我们平时常常会接触到的文件,但是无论是阅读和编辑都需要依赖一些工具,所以今天给大家介绍的是4个很多人都在使用的PDF阅读器。 1、福昕PDF阅读软件 这款PDF编辑器是一个大厂其他的产品,功能非常的强大,…