返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现对二维码数据进行压缩
  • 702
分享到

Python实现对二维码数据进行压缩

Python二维码数据压缩Python数据压缩Python二维码数据 2023-02-15 12:02:10 702人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录前言一、二维码数据的压缩和写入1.读取二进制文件数据2.压缩二进制文件数据3.使用base64对压缩后的二进制文件数据进行编码4.将编码后的数据写入二维码二、读取压缩后的二维码数

前言

当前二维码的应用越来越广泛,包括疫情时期的健康码也是应用二维码的典型案例,最近需要通过一张二维码显示较多文本数据,也就是对二维码数据进行压缩,使用CSDN搜索了半天居然没有能简单使用的代码,很多事例代码解决不了字符编码、中文乱码等常见问题。因此只能自己研究了。

本文的目标很明确,就是使用python,实现一张二维码显示更多信息,代码简单实用,不乱码,支持中文,copy就能运行,支持txt、doc、wps、docx、xls、xlsx、pdf、gif、jpg、png、mp4、avi、mp3等所有文件格式,压缩、生成、读取二维码一个py文件实现。

以下是程序的代码文件结构,尽量简单易用。

一、二维码数据的压缩和写入

1.读取二进制文件数据

使用二进制文件,避免了由于字符编码导致的各种问题,很多博客中的事例代码对中文支持很不友好,导致经常出现乱码、截断等问题,所以文本的数据源使用二进制代码尽量避开文字编码问题。下图是待压缩进二维码的一个txt文档,当然还可以是pdf、Wordexcel等文件。

代码如下:

# 使用二进制模式读取以_file_path为路径的文件
    _file = open(_file_path, mode="rb")
    _contents = _file.read()

2.压缩二进制文件数据

使用zlib.compress()方法对二进制数据进行压缩。

# 对数据进行压缩
    _contents_zip = zlib.compress(_contents, zlib.Z_BEST_COMPRESSioN)

3.使用base64对压缩后的二进制文件数据进行编码

使用base64编码可以避免很多编码转换问题,而且base64编码都是由英文字符组成,非常方便程序员调试和对比前后数据是否一致。

# 转换为_base64格式方便数据传输
    _contents_base64 = base64.b64encode(_contents_zip)
    _temp_str_utf8 = _contents_base64.decode('utf-8')
    print("压缩进二维码的base64编码为:%s" % _temp_str_utf8)

程序运行后结果如下图:

4.将编码后的数据写入二维码

创建QRCode对象后,可使用.add_data()方法向二维码加入数据,确认数据全部加入后使用.make_image()在内存中生成二维码,最后使用.save()就可以保存二维码图片到电脑指定位置。

# 创建QRCode对象
    _qr = qrcode.QRCode()
    # 向二维码添加数据
    _qr.add_data(_temp_str_utf8, 0)
    # 生成二维码并保存
    _image = _qr.make_image()
    _image.save("compress_qrcode.png")

程序运行后,二维码图片保存位置如下图:

打开二维码如下:

二、读取压缩后的二维码数据

1.识别二维码图片并读取数据

使用Pythonpyzbar库即可实现二维码的识别,如果发现pyzbar识别不了那就需要使用OpenCV相关库对图片进行处理,提高识别的准确性,这里就不展开研究opencv处理图像的内容了。

# 读取图片对象
    _image = cv2.imread(_file_path)
    # 使用pyzbar解析二维码中的数据
    _qr_data = pyzbar.decode(_image)

2.使用base64对读取的数据进行解码

# 识别二维码并解压缩
    return_data = read_compress_qrcode("compress_qrcode.png")
    base64_data = return_data[0].data.decode("utf-8")
    print("读取并解码后的base64编码为:%s" % base64_data)
    # 解码base64数据
    bytes_data = base64.b64decode(base64_data)

程序运行后的识别结果如下图,可以发现前后数据是一致的。

3.解压解码后数据

使用zlib.decompress()进行解压。

# 解压数据
    unzip_bytes_data= zlib.decompress(bytes_data)

4.还原文件数据

使用二进制写方式wb打开文件,把数据重新写入并保存。

# 还原压缩文件,使用二进制方式写入文件
    with open("还原后的文件.txt", 'wb') as f:
        f.write(unzip_bytes_data)
        f.close()

程序运行后生成的文件如下图:

可以看到还原后的文件和压缩前是一致的。

三、完整源代码

完整的Python源代码

以下是完整的python代码,后续继续优化改进。

import zlib
import base64
import qrcode
import cv2
from pyzbar import pyzbar


def compress_qrcode(_file_path):
    """
    把二进制文件压缩进二维码的函数
    :param _file_path: 待压缩进二维码的文件路径
    :return: 无
    """
    # 使用二进制模式读取以_file_path为路径的文件
    _file = open(_file_path, mode="rb")
    _contents = _file.read()
    # 对数据进行压缩
    _contents_zip = zlib.compress(_contents, zlib.Z_BEST_COMPRESSION)
    # 转换为_base64格式方便数据传输
    _contents_base64 = base64.b64encode(_contents_zip)
    _temp_str_utf8 = _contents_base64.decode('utf-8')
    print("压缩进二维码的base64编码为:%s" % _temp_str_utf8)
    # 创建QRCode对象
    _qr = qrcode.QRCode()
    # 向二维码添加数据
    _qr.add_data(_temp_str_utf8, 0)
    # 生成二维码并保存
    _image = _qr.make_image()
    _image.save("compress_qrcode.png")


def read_compress_qrcode(_file_path):
    # 读取图片对象
    _image = cv2.imread(_file_path)
    # 使用pyzbar解析二维码中的数据
    _qr_data = pyzbar.decode(_image)
    # 返回读取的数据
    return _qr_data


if __name__ == '__main__':
    # 压缩并生成二维码
    compress_qrcode("待压缩进二维码的文件.txt")
    # 识别二维码并解压缩
    return_data = read_compress_qrcode("compress_qrcode.png")
    base64_data = return_data[0].data.decode("utf-8")
    print("读取并解码后的base64编码为:%s" % base64_data)
    # 解码base64数据
    bytes_data = base64.b64decode(base64_data)
    # 解压数据
    unzip_bytes_data= zlib.decompress(bytes_data)
    # 还原压缩文件,使用二进制方式写入文件
    with open("还原后的文件.txt", 'wb') as f:
        f.write(unzip_bytes_data)
        f.close()

到此这篇关于Python实现对二维码数据进行压缩的文章就介绍到这了,更多相关Python二维码数据压缩内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实现对二维码数据进行压缩

本文链接: https://lsjlt.com/news/196168.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python实现对二维码数据进行压缩
    目录前言一、二维码数据的压缩和写入1.读取二进制文件数据2.压缩二进制文件数据3.使用base64对压缩后的二进制文件数据进行编码4.将编码后的数据写入二维码二、读取压缩后的二维码数...
    99+
    2023-02-15
    Python二维码数据压缩 Python数据压缩 Python二维码数据
  • 怎么在linux中对数据进行压缩
    这篇文章将为大家详细讲解有关怎么在linux中对数据进行压缩,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1,tar命令使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是...
    99+
    2023-06-09
  • 如何在Python中使用二维码对象进行数据传输?
    在当今数字化的时代,二维码已经成为了一种非常常见的数据传输方式。Python作为一种流行的编程语言,自然也有相应的库可以用来生成和解码二维码。在本篇文章中,我们将会探讨如何在Python中使用二维码对象进行数据传输。 一、生成二维码对象 P...
    99+
    2023-10-23
    响应 二维码 对象
  • C#中对字符串进行压缩和解压的实现
    目录利用GZip和Brotli压缩方法的优势,减少字符串数据的大小,提高.NET核心应用程序的性能。在Visual Studio 2022中创建一个控制台应用程序项目安装Benchm...
    99+
    2022-11-13
    C# 字符串压缩解压 C# 字符串压缩 C# 字符串解压
  • mysql中如何进行数据压缩性能对比
    这篇文章给大家分享的是有关mysql中如何进行数据压缩性能对比的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 测试环境1.1 软硬件一台 64位 2.6.18-92 内核Linux开发机,4G内存,4个280...
    99+
    2023-06-25
  • 怎么在HDFS中进行数据压缩
    这篇文章主要讲解了“怎么在HDFS中进行数据压缩”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在HDFS中进行数据压缩”吧!通过数据压缩实现高效存储数据压缩是文件处理的重要方面,在处理H...
    99+
    2023-06-02
  • Node.js实现压缩与解压数据
    Node.js中提供了一个很好的库Zlib来压缩解压数据。 一、压缩缓冲区 Zlib中有下面几个函数方便解压缩缓冲区. gzip/gunzip:标准gzip压缩.deflate/in...
    99+
    2024-04-02
  • Python使用zlib对数据进行简单压
    在Python丰富的库中,也有着对数据进行压缩处理的库(zlib)。对于需要数据压缩的应用程序,此模块中的功能允许使用zlib库进行压缩和解压缩。 (本文只对简单的字符串数据进行压缩,如需压缩文件等复杂数据类型,详见zlib官网...
    99+
    2023-01-31
    简单 数据 Python
  • Redis怎么实现数据的压缩和解压缩
    Redis可以通过以下方式实现数据的压缩和解压缩: 使用Redis的压缩功能:Redis可以通过配置选项来启用对数据的压缩功能。...
    99+
    2024-05-07
    Redis
  • 怎么使用python对图片进行批量压缩
    本篇内容主要讲解“怎么使用python对图片进行批量压缩”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用python对图片进行批量压缩”吧!使用Python和Pillow模块压缩图片Pil...
    99+
    2023-07-02
  • 如何在 ASP 中使用 http shell 对象进行数据压缩?
    ASP是一种常用的Web开发语言,其灵活性和易用性使其成为了许多开发者的首选。在ASP中,使用http shell对象进行数据压缩是一种非常常见的操作,本文将介绍如何在ASP中使用http shell对象进行数据压缩。 一、什么是http ...
    99+
    2023-06-02
    http shell 对象
  • python调用zxing项目进行二维码
    摘要:首先创建一个java的maven项目,加入zxing相关包,编写二维码相关代码,调试运行,打包;然后创建一个python项目,安装jpype,编写代码把相关的jar包加载,运行。 0. 创建一个maven项目 1. 配置po...
    99+
    2023-01-31
    项目 二维码 python
  • python如何对二维列表进行排序
    Python可以使用内置的sort()方法对二维列表进行排序。sort()方法可以接受一个可选的参数key,用于指定排序的依据。以下...
    99+
    2023-10-11
    python
  • python怎么对二维列表进行排序
    在Python中,可以使用sorted()函数来对二维列表进行排序。你可以通过传递一个lambda函数作为key参数来指定排序的规则...
    99+
    2024-02-29
    python
  • Redis如何实现数据压缩与解压缩功能
    Redis是一款高性能的内存数据库,常用于缓存和数据存储。在数据存储方面,Redis提供了压缩和解压缩功能,可以有效地节省内存空间,提高数据存储和传输效率。本文将介绍Redis如何实现数据压缩和解压缩功能,并给出具体代码示例。Redis中的...
    99+
    2023-11-07
    redis 数据压缩 解压缩
  • Python中怎么批量对文件进行压缩处理
    本篇文章为大家展示了Python中怎么批量对文件进行压缩处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、第一步导入需要的三个库import os as os&nb...
    99+
    2023-06-15
  • labview怎么对二维数组进行排序
    在LabVIEW中,可以使用Sort 2D Array函数对二维数组进行排序。以下是一个示例步骤:1. 创建一个二维数组。可以使用B...
    99+
    2023-09-26
    labview
  • 二维码和 Python 对象:如何在 Unix 系统中实现数据交换?
    在现代信息时代,信息交换已经成为了人们工作和生活的重要组成部分。而在 Unix 系统中,二维码和 Python 对象都是广泛应用的技术手段。本文将介绍如何通过 Python 对象和二维码,在 Unix 系统中实现高效的数据交换。 一、Py...
    99+
    2023-10-07
    对象 二维码 unix
  • 利用JAVA API函数实现数据的压缩与解压缩(转)
    本文通过对数据压缩算法的简要介绍,然后以详细的示例演示了利用java.util.zip包实现数据的压缩与解压,并扩展到在网络传输方面如何应用java.util.zip包现数据压缩与解压综述许多信息资料都或多或少的包含一些多余的数据。通常会导...
    99+
    2023-06-03
  • Hive中如何实现对中间数据启用压缩
    这篇文章主要介绍了Hive中如何实现对中间数据启用压缩,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。对中间数据启用压缩复杂的Hive查询通常会转换为一系列多阶段的MapRed...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作