Lab2QRCode 是一款支持 Windows、Linux 平台的工具,支持将任意二进制或文本文件转换为多种条码图片,以及将条码图片解码回原始文件。
- 🔄 双向转换:支持文件(包括二进制文件)到条码的编码,以及条码到文件的解码
- 📊 多格式支持:支持生成和识别几乎所有的标准一维二维条码格式
- 🔒 数据安全:通过 Base64 编码确保特殊字符的正确处理
- 🖼️ 图像支持:兼容常见图像格式
- 🎯 用户友好:简洁的图形界面,操作简单直观
- 📂 批量处理:支持一次性处理多个文件,提升工作效率
- ✏️ 手动输入生成条码:用户可手动输入文本生成条码
- 📷 摄像头扫描识别:支持使用摄像头扫描条码进行识别和解码
| 单文件生成与解码 | 手动输入生成条码 | 批量文件生成条码 点击浏览按钮后打开目录,可多选文件。 解码不在乎条码类型选择的是什么,默认尝试所有 19 种条码进行解码。 |
default.mp4
使用 cmake 管理项目,依赖三方库:
Qt5- 图形界面zxing-cpp- 条码处理核心库OpenCV4- 图像处理Boost.Asio- 网络通信spdlog- 日志nlohmann_json- JSON 数据处理mqtt5- 消息订阅magic_enum- 枚举转字符串xlsxwriter- Excel 文件写入
构建工具:支持 Visual Studio 2022 (MSVC)、GCC 及 Clang 工具链
测试平台:已在 Windows 10/11、Ubuntu 22.04/24.04、Debian 12/13、Arch Linux 等主流系统验证通过
项目还依赖 pwsh 终端。
在 Debian 系发行版上,可以使用以下命令安装:
curl -O "https://mirrors.pku.edu.cn/debian/pool/main/i/icu/libicu72_72.1-3+deb12u1_amd64.deb"
sudo dpkg -i libicu72_72.1-3+deb12u1_amd64.deb
curl -O "https://github.com/PowerShell/PowerShell/releases/download/v7.5.4/powershell_7.5.4-1.deb_amd64.deb"
sudo dpkg -i powershell_7.5.4-1.deb_amd64.deb其它发行版参照微软文档。
在 Debian 系发行版上,可以使用以下命令安装依赖:
sudo apt install qtbase5-dev qt5-qmake qtmultimedia5-dev libboost-all-dev cmake ninja-build build-essential libopencv-dev libspdlog-dev libxlsxwriter-dev libzxing-devWarning
-
注意:如果是使用了
clang >= 20编译器,则不应该安装libfmt-dev和libspdlog-dev。请自行从源码编译
fmt和spdlog,因为它们在新版修复了一个编译问题。 -
注意:在 Ubuntu22.04 中注意到,如果使用
vcpkg或apt安装opencv4,会与Qt5的gtk插件产生冲突,导致 Qt 程序无法启动。请自行源码编译
opencv4,构建教程参见 opencv 官方文档。
对于其它发行版,请自行安装相应的依赖包。
git clone https://github.com/Mq-b/Lab2QRCode
mkdir build && cd build
cmake ..
cmake --build . -j --config Release构建完成后,在 build/Release/bin/ 目录下会生成 Lab2QRCode 可执行文件。
winget install pwsh可以使用 vcpkg 来安装依赖库,具体请自行处理。
vcpkg 安装方法如下:
git clone https://github.com/microsoft/vcpkg.git
./vcpkg/bootstrap-vcpkg.bat
./vcpkg/vcpkg install opencv[core]:x64-windows spdlog:x64-windows libxlsxwriter:x64-windowsNote
注意这没有安装 qt5 、boost 和 zxing-cpp。也可以直接使用 vcpkg 安装前两者,但是 zxing-cpp 并没有收录在 vcpkg 当中,需要自行源码编译。
git clone https://github.com/Mq-b/Lab2QRCode
mkdir build && cd build
cmake ..
cmake --build . -j --config ReleaseTip
如果你在上一步中安装了 vcpkg,请将:
cmake ..替换为:
cmake .. -DCMAKE_TOOLCHAIN_FILE="../vcpkg/scripts/buildsystems/vcpkg.cmake"路径根据自身环境而定,当然如果你已经将 vcpkg 集成到全局的环境当中也不需要这一步。
构建完成后,在 build\Release\bin\ 目录下会生成 Lab2QRCode.exe 可执行文件。
Lab2QRCode 支持以下多种条码格式的生成和识别:
| 条码类型 | 格式名称 | 类别 | 特点 |
|---|---|---|---|
| QR Code | QRCode | 二维码 | 高容量、快速读取 |
| Micro QR Code | MicroQRCode | 二维码 | 小型QR码变体 |
| rMQR Code | RMQRCode | 二维码 | 矩形微QR码 |
| Aztec Code | Aztec | 二维码 | 不需要留白边 |
| Data Matrix | DataMatrix | 二维码 | 小尺寸标识 |
| PDF417 | PDF417 | 二维码 | 堆叠式线性码 |
| MaxiCode | MaxiCode | 二维码 | 货运包裹使用 |
| EAN-13 | EAN13 | 一维码 | 商品零售 |
| EAN-8 | EAN8 | 一维码 | 小型商品 |
| UPC-A | UPCA | 一维码 | 北美商品 |
| UPC-E | UPCE | 一维码 | UPC压缩格式 |
| Code 128 | Code128 | 一维码 | 高密度字符集 |
| Code 39 | Code39 | 一维码 | 字母数字支持 |
| Code 93 | Code93 | 一维码 | Code39增强版 |
| Codabar | Codabar | 一维码 | 血库、图书馆 |
| ITF | ITF | 一维码 | 交插二五码 |
| DataBar | DataBar | 一维码 | 原RSS码 |
| DataBar Expanded | DataBarExpanded | 一维码 | 扩展数据容量 |
| DataBar Limited | DataBarLimited | 一维码 | 有限字符集 |
| DX Film Edge | DXFilmEdge | 一维码 | 电影胶片边码 |
为确保数据传输和转换过程中的兼容性,程序在生成条码前会对数据进行 Base64 编码,而在解码时进行 Base64 解码。这一过程可以有效防止特殊字符(如控制字符、中文、换行符等)对数据正确性的影响。
您可以手动选择是否启用或禁用此功能。在默认情况下,启用 Base64 编码功能,可以确保数据在条码转换过程中不受字符集、编码等问题的影响。
如果你希望在自己的项目中使用 Base64 编解码功能,可以参考本项目中的实现,具体代码见 SimpleBase64.h。
我们欢迎任何形式的贡献,包括但不限于 bug 修复、功能增强、文档改进等。如果您希望为项目做出贡献,请遵循以下步骤:
-
Fork 本项目到您的 GitHub 帐户
-
在您的分支上进行修改
-
提交 Pull Request
我们使用 clang-format 来统一代码风格。请确保在提交代码前执行自动格式化。
CI 使用 clang-format-22 进行检查,建议使用相同版本的 clang-format 来格式化代码。
Note
注意如果使用 clang-format-19 或更低版本有一个已知问题:
在低版本中:
MyClass obj = {
.member1 = value1,
.member2 = value2,
};然而在高版本中:
MyClass obj = {
.member1 = value1,
.member2 = value2,
};因此建议使用 clang-format-22 以避免不必要的代码差异。
如果你是 Debian 系发行版用户,可以使用以下命令快速安装 clang-22 工具链:
sudo apt install curl gnupg
curl https://apt.llvm.org/llvm.sh | sudo bash -s 22 all如果你只希望安装 clang-format-22,可以使用以下命令:
sudo apt install curl gnupg
curl https://apt.llvm.org/llvm.sh | grep -Ev '^\s*apt(-get)?\s+install' | sudo bash -s 22
sudo apt install clang-format-22本项目采用 MIT 许可证。