Python实现(条形码,二维码)生成识别

news2024/11/18 1:25:02

Python实现(二维码,条形码)生成识别

  • 生成条形码
  • 生成二维码
  • 识别条形码二维码

生成条形码

安装barcode模块:
$ pip install python-barcode
barcode文档

import barcode
from barcode.writer import ImageWriter
# 更多了解:https://pypi.org/project/python-barcode/0.8.1/
# pip install python-barcode

#查看 python-barcode 支持的条形码格式
print(f"python-barcode支持的条形码格式:\n{barcode.PROVIDED_BARCODES}") 
 
# 创建条形码格式对象,参数为支持的格式
EAN = barcode.get_barcode_class('code39')

# 条形码内容
message = "69202308041823"
 
# 创建条形码对象
ean = EAN(message,writer=ImageWriter())
 
# 保存条形码图片,并且返回路径
fullname = ean.save("./resource/image/条形码")
print(f"条形码保存路径:{fullname}")

python-barcode支持的条形码格式:
[‘codabar’, ‘code128’, ‘code39’, ‘ean’, ‘ean13’, ‘ean13-guard’, ‘ean14’, ‘ean8’, ‘ean8-guard’, ‘gs1’, ‘gs1_128’, ‘gtin’, ‘isbn’, ‘isbn10’, ‘isbn13’,
‘issn’, ‘itf’, ‘jan’, ‘nw-7’, ‘pzn’, ‘upc’, ‘upca’]

生成的条形码:
请添加图片描述

生成二维码

安装qrcode和pillow模块:
$pip install qrcode
$pip install pillow
qrcode文档

import qrcode

website_link = 'http://www.baidu.com'

qr = qrcode.QRCode(version = 1, error_correction=qrcode.ERROR_CORRECT_M, box_size = 10, border = 5)

qr.add_data(website_link)

qr.make(fit=True)

img = qr.make_image(fill_color = 'black', back_color = 'white')
img.show()
img.save('./resource/image/qr1.png')

生成的二维码图片:
请添加图片描述
生成带LOGO图片的二维码:


from PIL import Image
import qrcode

#生成带logo图案的二维码

qr = qrcode.QRCode(version=5,error_correction=qrcode.constants.ERROR_CORRECT_H,box_size=8,border=4)
#version:值为1~40的整数,控制二维码的大小(最小值是1,是个21×21的矩阵)
#error_correction:控制二维码的错误纠正功能。可取值下列4个常量:
'''
qrcode.constants.ERROR_CORRECT_X:
    1. X=L时,大约7%或更少的错误能被纠正。
    2. X=M(默认)时,大约15%或更少的错误能被纠正。
    3. X=Q时,25%以下的错误会被纠正。
    4. X=H时,大约30%或更少的错误能被纠正。
'''
#box_size:控制二维码中每个小格子包含的像素数。
#border:控制边框(二维码与图片边界的距离)包含的格子数(默认为4)


#向二维码中添加信息
qr.add_data("https://www.csdn.net/")

qr.make(fit=True)

img = qr.make_image()
#二维码设置为彩色
img = img.convert('RGBA')
#打开logo图片
logo = Image.open("./resource/image/logo.png")
#二维码尺寸
img_w,img_h = img.size
#默认LOGO最大设为图片的1/4
factor = 4
#最大logo尺寸
size_w = int(img_w/factor)
size_h = int(img_h/factor)
#logo的尺寸
logo_w,logo_h = logo.size

if logo_w > size_w or logo_h > size_h:
    logo_w = size_w
    logo_h = size_h
logo = logo.resize((logo_w,logo_h),Image.ANTIALIAS).convert('RGBA')
l_w = int((img_w-logo_w)/2)
l_h = int((img_h-logo_h)/2)
#替换指定位置
img.paste(logo,(l_w,l_h),logo)
img.show()
img.save("./resource/image/qrcode1.png")

生成的带logo的图片
请添加图片描述

识别条形码二维码

安装pyzbar模块:
$pip install pyzbar
自动识别条形码或二维码图片,一张图若有多个码返回识别列表

import cv2
from pyzbar.pyzbar import decode

# 安装依赖库
# pip install pyzbar

# 读取图像
# img = cv2.imread('./resource/image/bar1.png', cv2.IMREAD_GRAYSCALE)

img = cv2.imread('./resource/image/qr1.png', cv2.IMREAD_GRAYSCALE)

# 解码图像
decode_data = decode(img)

print(decode_data)
# 输出结果
for data in decode_data:
    # print(data.data.decode('utf-8'))
    print(data)

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

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

相关文章

TX验证码

好久没分享文章了,今天来水水文章。 水的意思就是:文章不会分析参数的生成流程。 最开始菜鸡弟弟以为腾讯防水墙就只有一个滑块来着,也感谢不不哥哥提供的网址。 来看下tx旗下的验证类型。 当然除了这些之外,还有一种六宫格的&a…

心率变异性HRV指标说明:SDNN,SDANN,RMSSD,SDNNIndex,SDSD,NN50,PNN50;TP,ULF,VLF,LF,HF

自主神经活动与多种疾病有关系,特别是与某些心血管疾病的死亡率,尤其与猝死率有关。同时,也公认心率变异性(HRV)分析是判断自主神经活动的常用的定量指标。HRV降低是预测心脏病人死亡的独立危险因子,有十分…

java gc分析

使用工具转换:https://ctbots.com/#/ 通用GC分析 jstat -gc -t pid堆内存分析 jstat -gccapacity -t pid年轻代GC分析 jstat -gcnew -t pid年轻代内存分析 jstat -gcnewcapacity -t pid老年代GC分析 jstat -gcold -t pid老年代内存分析 jstat -gcoldcapacity…

IO进程线程第七天(8.4)信号量,条件变量

在第一题的基础上加上一个需求:要求打印,倒置线程,顺序执行。出现的现象为先打印1234567,后打印7654321(不使用flag) 创建两个线程,其中一个线程读取文件中的数据,另外一个线程将读…

新手Vite打包工具的使用并解决yarn create vite报错

一、手动创建 1.创建vite-Demo文件夹 2.初始化 yarn init -y 3.安装vite yarn add -D vite 4.打包准备 说明&#xff1a;不需要在src下面创建&#xff0c;在vite-Demo文件夹创建 4.1index.js文件 document.body.insertAdjacentHTML("beforeend","<h1>…

MySQL函数(二十五)

二八佳人体似酥&#xff0c;腰悬利剑斩愚夫&#xff0c;虽然不见人头落,暗里教君骨髓枯。 上一章简单介绍了 MySQL存储过程(二十四),如果没有看过,请观看上一章 前面学习了很多函数&#xff0c;使用这些函数可以对数据进行的各种处理操作&#xff0c;极大地提高用户对数据库的…

Linux(三):Linux服务器下日常实操命令 (常年更新)

基础命令 cd命令&#xff1a;切换目录 cd &#xff1a;切换当前目录百至其它目录&#xff0c;比如进入/etc目录&#xff0c;则执行 cd /etccd / &#xff1a;在Linux 系统中斜杠“/”表示的是根目录。cd / ,即进入根目录.cd ~&#xff1a;进入用户在该系统的home目录&#…

小程序商品如何设置限购

限购是一种常用的小程序商品销售策略&#xff0c;可以帮助商家提高销售额、控制库存和增加用户的购买欲望。那么&#xff0c;小程序产品怎么设置限购呢&#xff1f;下面将为您详细介绍。 1. 设置限购数量 可以设置最低购买数量来鼓励用户批量购买或满足特定的销售需求。例如&…

为什么大多数团队推行自动化测试最后却不了了之?

随着软件行业的快速发展&#xff0c;接口测试用例在软件开发中扮演着越来越重要的角色。自动化测试作为软件测试的一个重要分支&#xff0c;一般可以提高测试效率和质量&#xff0c;节约测试成本和时间&#xff0c;但是在实际推行过程中&#xff0c;大多数团队最终却难以持续实…

在word的文本框内使用Endnote引用文献,如何保证引文编号按照上下文排序

问题 如下图所示&#xff0c;我在word中插入了一个文本框&#xff08;为了插图&#xff09;&#xff0c;然后文本框内有引用&#xff0c;结果endnote自动将文本框内的引用优先排序&#xff0c;变成文献[1]了&#xff0c;而事实上应该是[31]。请问如何能让文本框内的排序也自动…

[CKA]考试之持久化存储卷PersistentVolume

由于最新的CKA考试改版&#xff0c;不允许存储书签&#xff0c;本博客致力怎么一步步从官网把答案找到&#xff0c;如何修改把题做对&#xff0c;下面开始我们的 CKA之旅 题目为&#xff1a; Task 创建一个pv&#xff0c;名字为app-config&#xff0c;大小为2Gi&#xff0c;…

数据结构初阶--二叉树的顺序结构之堆

目录 一.堆的概念及结构 1.1.堆的概念 1.2.堆的存储结构 二.堆的功能实现 2.1.堆的定义 2.2.堆的初始化 2.3.堆的销毁 2.4.堆的打印 2.5.堆的插入 向上调整算法 堆的插入 2.6.堆的删除 向下调整算法 堆的删除 2.7.堆的取堆顶元素 2.8.堆的判空 2.9.堆的求堆的…

PyMol选择配体周围的氨基酸残基

PyMOL选择配体周围的氨基酸残基 1. 问题 经常使用PyMOL做蛋白质和小分子的可视化&#xff0c;可以直接生成用于文章发表的高质量图片&#xff0c;图片生成可参考pymol作图 等教程。但是&#xff0c;用了这么久一直没发现可以直接用于选择配体周围一定距离氨基酸残基的功能。 …

Java阶段五Day17

Java阶段五Day17 文章目录 Java阶段五Day17师傅后台功能师傅审核列表相关功能启动进程和启动方式 后台审核详情查询查询审核详情流程远程调用图片服务 缓存逻辑缓存逻辑流程查询引入缓存流程完成缓存逻辑面试题整理 附录redis分布式——架构演变 师傅后台功能 师傅审核列表 相…

熟练掌握ChatGPT解决复杂问题——学会提问

目录 引言 一、5W1H分析法 1. 简单的问题&#xff08;what、where、when、who&#xff09; 2.复杂的问题&#xff08;why、how&#xff09; 2.1 为什么&#xff08;Why&#xff09;——原因 2.2 方式 &#xff08;How&#xff09;——如何 二、如何提问得到更高质量的答案…

mysql按照日期分组统计数据

目录 前言按天统计按周统计按月统计按年统计date_format参数 前言 mysql的date_format函数想必大家都使用过吧&#xff0c;一般用于日期时间转化 # 例如 select DATE_FORMAT(2023-01-01 08:30:50,%Y-%m-%d %H:%i:%s) # 可以得出 2023-01-01 08:30:50# 或者是 select DATE_FOR…

python中*与**的使用

文章目录 前言一、*与**在函数定义时二、*与**在函数调用时 前言 在python中*与**的使用要区分是在函数定义时还是在函数调用时。 一、*与**在函数定义时 def deng(*args,**kwargs):print(args)print(kwargs)deng(1,2,3,a 4,b 5)在函数定义时参数前面使用*&#xff0c;代表…

面试必考精华版Leetcode872. 叶子相似的树

题目&#xff1a; 代码&#xff08;首刷看解析 day23&#xff09;&#xff1a; class Solution { public:void dfs(TreeNode* root,vector<int>& seq){if(!root->left&&!root->right){seq.emplace_back(root->val);}else{if(root->left){dfs(ro…

java讲解Spring Boot配置文件级别 相互覆盖关系 解决一方不愿意给数据库密码 一方不愿意给源码时 数据库配置问题

前面 我们讲过Spring Boot 修改临时变量的方式 但另一个场景 就是 我们 在本地开发环境 用的是一个配置 但如果项目经理上线 他想改这些配置 怎么弄呢 特别是数据库之类的配置 很多线上是不太一样的 那么 我们先看一个比较基本的方法 在配置文件的同目录下创建一个目录 叫 con…

Sketch打不开AI文件?转换方法在这里

1、对比设计软件 Sketch 与 AI 软件功能 Sketch 与 Illustrator 都是行业内优秀的矢量图形设计软件&#xff0c;各有千秋。Sketch 从 2010 年面世&#xff0c;专注 APP 界面设计&#xff0c;深受初学者与专业人士喜爱。Illustrator 拥有更悠久的历史&#xff0c;是处理复杂图标…