ZXing-C++ 开发者指南
zxing-cpp C++ port of ZXing 项目地址: https://gitcode.com/gh_mirrors/zx/zxing-cpp
1. 项目介绍
ZXing-C++ 是一个开源的多格式线性/矩阵条码图像处理库,使用 C++ 编写。它最初是从 Java 版本的 ZXing 条码库移植而来,并在此基础上进行了进一步的开发和优化,提升了运行时和检测性能。ZXing-C++ 能够读写多种格式的条码。
特性
- 使用纯 C++20 (/C++17) 编写,无第三方依赖(针对库本身)
- 线程安全
- 提供多种语言的封装/绑定,包括 Android、C、iOS、Kotlin/Native、.NET、Python、Rust、WebAssembly、WinRT 和 Flutter(外部项目)
支持的格式
- 线性产品
- 线性工业
- 矩阵
- UPC-A
- Code 39
- QR Code
- UPC-E
- Code 93
- 微型 QR Code
- EAN-8
- Code 128
- rMQR Code
- EAN-13
- Codabar
- Aztec
- DataBar
- DataBar 扩展
- DataMatrix
- DataBar 限定
- DX Film Edge
- PDF417
- ITF
- MaxiCode(部分支持)
2. 项目快速启动
以下是一个简单的条码读取示例:
#include "ZXing/ReadBarcode.h"
#include <iostream>
int main(int argc, char** argv) {
int width, height;
unsigned char* data;
// 从某处加载你的图像数据。ImageFormat::Lum 假设灰度图像数据。
auto image = ZXing::ImageView(data, width, height, ZXing::ImageFormat::Lum);
auto options = ZXing::ReaderOptions().setFormats(ZXing::BarcodeFormat::Any);
auto barcodes = ZXing::ReadBarcodes(image, options);
for (const auto& b : barcodes) {
std::cout << ZXing::ToString(b.format()) << ": " << b.text() << std::endl;
}
return 0;
}
构建指令
- 确保安装了 CMake 版本 3.16 或更高(Python 模块需要 3.18 或更高)。
- 确保安装了一个支持 C++20 的编译器(至少 VS 2019 16.10? / gcc 11 / clang 12?)。
- 使用以下命令克隆仓库:
git clone https://github.com/zxing-cpp/zxing-cpp.git --recursive --single-branch --depth 1
- 使用 CMake 配置和构建项目:
cmake -S zxing-cpp -B zxing-cpp.release -DCMAKE_BUILD_TYPE=Release
cmake --build zxing-cpp.release -j8 --config Release
3. 应用案例和最佳实践
条码读取
为了读取条码,你需要加载图像数据到内存中,然后使用 ReadBarcodes()
方法。
条码生成
创建一个 MultiFormatWriter
实例,设置你想要生成的格式,然后使用 encode()
方法生成条码。
4. 典型生态项目
ZXing-C++ 生态系统中的一些项目包括:
- Android、iOS 和其他移动平台的封装
- 不同语言的绑定,如 Python、Rust 等
- WebAssembly 版本,允许在 Web 应用程序中使用
以上就是 ZXing-C++ 的开发者指南,希望对你有所帮助。
zxing-cpp C++ port of ZXing 项目地址: https://gitcode.com/gh_mirrors/zx/zxing-cpp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考