10 miniz压缩解压缩
作者:沈园园 | 最后修改:2026-04-27
一、MINIZ 解压工具简介
miniz是一个单一文件的小型压缩库,它是zlib的一个替代品,专门为需要轻量级压缩解决方案的项目设计,它被设计成可以轻松地集成到项目中,并且具有最小的依赖性。
miniz的主要特点包括:
- 支持zlib兼容的压缩和解压缩。
- 单个源文件实现,易于集成。
- 小的内存占用,适合资源受限的环境。
- 支持流式压缩和解压缩。 注意:如果数据本身只有几十个字节,压缩后可能更大,而非更小。
二、演示功能概述
演示miniz的压缩与解压缩的使用方法。
三、准备硬件环境
参考:硬件环境清单,准备以及组装好硬件环境。

1、Air1601开发板一块
2、TYPE-C USB数据线一根
3、Air1601开发板和数据线的硬件接线方式为
- Air1601开发板通过TYPE-C USB口连接TYPE-C USB 数据线,数据线的另外一端连接电脑的USB口;
- 在 Air1601 开发板上丝印标注 USB1,为芯片烧录下载接口;
- 若遇到因电脑 USB 端口供电不足导致的烧录失败,也可改用外部稳压电源通过开发板上的 VIN 引脚进行供电;
购买链接:Air1601开发板 多功能5寸RGB屏 支持AirUI 摄像头 代开发固件-淘宝网
四、准备软件环境
4.1 软件环境
在开始实践本示例之前,先筹备一下软件环境:
1、烧录工具:Luatools 下载调试工具;
2、内核固件文件(底层 core 固件文件):
本demo开发测试时使用的固件为LuatOS-SoC_V1004_Air1601.soc,本demo对固件版本没有什么特殊要求,所以你如果要测试本demo时,可以直接使用最新版本的内核固件;如果发现最新版本的内核固件测试有问题,可以使用我们开发本demo时使用的内核固件版本来对比测试。
3、脚本文件:https://gitee.com/openLuat/LuatOS/tree/master/module/Air1601_Air1602/demo/miniz
4、lib脚本文件:使用Luatools烧录时,勾选 添加默认lib 选项,使用默认lib脚本文件
准备好软件环境之后,接下来查看如何烧录项目文件到 Air1601 开发板中,将本篇文章中演示使用的项目文件烧录到Air1601开发板 中。
4.2 API 介绍
miniz 库:https://docs.openluat.com/osapi/core/miniz/
五、程序结构
miniz/
│── main.lua
│── miniz_app.lua
│── readme.md
5.1 文件说明
main.lua:主程序入口文件。miniz_app.lua:miniz的压缩与解压缩的使用方法。
六、代码详解
6.1 main.lua
主程序文件 main.lua 是整个项目的入口点。它负责初始化系统环境。
6.2 miniz_app.lua
miniz的压缩与解压缩的使用方法。
6.2.1 压缩与解压
local function miniz_task_func()
-- 压缩过的字符串, 为了方便演示, 这里用了base64编码
-- miniz能解压标准zlib数据流
-- 将字符串进行base64解码
local b64str = "eAEFQIGNwyAMXOUm+E2+OzjhCCiOjYyhyvbVR7K7IR0l+iau8G82eIW5jXVoPzF5pse/B8FaPXLiWTNxEMsKI+WmIR0l+iayEY2i2V4UbqqPh5bwimyEuY11aD8xeaYHxAquvom6VDFUXqQjG1Fek6efCFfCK0b0LUnQMjiCxhUT05GNL75dFUWCSMcjN3EE5c4Wvq42/36R41fa"
local str = b64str:fromBase64()
-- 快速解压
local dstr = miniz.uncompress(str)
-- 压缩过的数据长度 156
-- 解压后的数据长度,即原始数据的长度 235
log.info("miniz", "压缩过的数据长度: ", #str, "解压后的数据长度:", #dstr)
-- 演示压缩解压
local ostr = "abcd1234567890efghijklmnopqrstuvwxyzabcd1234567890efghijklmnopqrstuvwxyzabcd1234567890efghijklmnopqrstuvwxyz"
log.info("压缩前的字符串:", #ostr, ostr)
-- 压缩字符串
local zstr = miniz.compress(ostr)
log.info("压缩后的字符串:",#zstr, zstr:toHex())
-- 解压字符串
local lstr = miniz.uncompress(zstr)
log.info("解压后的字符串:", #lstr, lstr)
-- 演示从文件读取2K数据压缩
local ostr = io.readFile("/luadb/test.txt")
local zstr = miniz.compress(ostr)
if zstr then
log.info("miniz", "压缩前的数据长度: ", #ostr, "压缩后的数据长度: ", #zstr)
end
end
--创建一个task,并且运行task的主函数miniz_task_func
sys.taskInit(miniz_task_func)
七、运行结果展示

八、总结
通过本文学习,你可以学习到miniz的压缩与解压缩的使用方法。