在本文中,我将演示如何使用 C++ 以编程方式生成条形码。您还将学习如何在您的 C++ 应用程序中实现条码扫描器或阅读器。
条形码用于以机器可读的形式直观地表示数据。上述技术已被证明是有用的,特别是在商店和超市中部署的自动结账系统中。现在市场上几乎所有的产品都包含条形码。条形码的这种广泛流行已将其用例扩展到各个领域。关注条形码的重要性,几年前,Aspose 推出了适用于各种平台的条形码生成器和阅读器 API。本文旨在展示如何在 C++ 应用程序中实现条码生成器和读取器以动态生成和读取条码。
- 使用 C++ 生成条形码
- 使用 C++ 生成二维条码(QR 或其他)
- 使用 C++ 创建具有自定义外观的条形码
- 使用 C++ 创建带有标题的条形码
- 使用 C++ 扫描和读取条形码
- 使用 C++ 读取多个条码符号
C++ 条码生成器和读取器 API
Aspose.BarCode for C++ 是一个功能丰富的 C++ API,用于生成和读取大量一维和二维条码。它使您可以生成、自定义条形码并将其导出为高质量图像。您可以从 下载 部分下载库文件。可下载的软件包还包含一个演示 C++ 应用程序供您使用。
以下是您可以使用 Aspose.BarCode for C++ 生成的条形码符号列表:
- 代码128
- Code39 标准
- Code39 扩展
- Code93 标准
- Code93 扩展
- 代码 11
- 科达巴
- BooklandEAN
- EAN13
- EAN8
- EAN128
- Interleaved2of5
- 标准2of5
- 微星
- 邮政网
- 行星
- UPCA
- UPCE
- EAN14(SCC14)
- SSCC18
- ITF14
- 条码补充
- PDF417
- 二维码
- 数据矩阵
- 矩阵 2 的 5
- PZN(Pharma Zentral Nummer,Pharmazentralnummer 条形码)
- 德国邮政识别码
- 阿兹台克人
- 澳大利亚邮政
使用 C++ 生成条形码
使用 Aspose.BarCode 生成条形码可以在几行代码内完成。以下是执行此操作的步骤。
- 创建 BarcodeGenerator 类的对象。
- 使用条形码的编码类型及其文本初始化对象。
- 使用 BarcodeGenerator->Save(System::String) 方法生成条形码。
以下代码示例展示了如何使用 C++ 生成条形码。
const System::String codeText = u"1234567";
const System::String fileName = u"code39_barcode.jpg";
// 创建条码生成器
System::SharedPtr<BarcodeGenerator> barcodeGenerator = System::MakeObject<BarcodeGenerator>(EncodeTypes::Code39Standard, codeText);
barcodeGenerator->get_Parameters()->set_Resolution(300);
// 生成条形码并保存为图像
barcodeGenerator->Save(fileName);
以下是我们使用上述代码生成的条形码。
使用 C++ 生成二维条码(QR 或其他)
在前面的示例中,我们创建了一个一维条形码。现在让我们创建一个二维条码,例如 QR 码。以下是创建 QR 条码的步骤。
- 创建 BarcodeGenerator 类的对象。
- 使用 EncodeTypes::QR 类型初始化对象并设置其文本。
- 使用 BarcodeGenerator->Save(System::String) 方法创建条形码图像。
以下代码示例展示了如何使用 C++ 生成 QR 条码。
const System::String codeText = u"1234567";
const System::String fileName = u"QR_Code.jpg";
// 创建条码生成器
System::SharedPtr<BarcodeGenerator> barcodeGenerator = System::MakeObject<BarcodeGenerator>(EncodeTypes::QR, codeText);
barcodeGenerator->get_Parameters()->set_Resolution(300);
// 生成条形码并保存为图像
barcodeGenerator->Save(fileName);
下面的二维码将使用上面的代码生成。
使用 C++ 生成自定义条码
您还可以自定义条码的外观。例如,您可以设置前景色、背景色、大小、边框样式等。以下是使用 Aspose.BarCode for C++ 自定义条码的步骤。
- 创建并初始化 BarcodeGenerator 类的对象。
- 使用 BarcodeGenerator->getParameters() 方法访问条形码参数。
- 设置所需的参数。
- 生成条形码并将其保存为图像。
以下代码示例展示了如何使用 C++ 生成自定义条形码。
System::SharedPtr<BarcodeGenerator> barcodeGenerator = [&] { auto tmp_0 = System::MakeObject<BarcodeGenerator>(EncodeTypes::Aztec, System::String(u"1234567890"));
// 设置布罗德风格
tmp_0->get_Parameters()->get_Border()->set_DashStyle(Aspose::BarCode::BorderDashStyle::Solid);
// 设置宽度
tmp_0->get_Parameters()->get_Border()->get_Width()->set_Millimeters(1.0f);
// 设置边框可见性
tmp_0->get_Parameters()->get_Border()->set_Visible(true);
// 设置背景颜色
tmp_0->get_Parameters()->set_BackColor(System::Drawing::Color::get_Black());
// 设置条形码的条形颜色
tmp_0->get_Parameters()->get_Barcode()->set_ForeColor(System::Drawing::Color::get_Orange());
// 设置边框颜色
tmp_0->get_Parameters()->get_Border()->set_Color(System::Drawing::Color::get_Black());
// 设置文本颜色
tmp_0->get_Parameters()->get_Barcode()->get_CodeTextParameters()->set_Color(System::Drawing::Color::get_Orange());
// 设置图像分辨率
tmp_0->get_Parameters()->set_Resolution(400);
return tmp_0; }();
barcodeGenerator->Save(System::String(u"custom_barcode.jpg"));
以下是我们生成的自定义 Aztec 条码。
使用 C++ 生成带有标题的条形码
条码也可能包含条码下方或上方的标题。您可以设置标题的文本及其在条形码图像中的可见性。以下代码示例展示了如何使用 C++ 生成带有标题的条形码。
System::SharedPtr<BarcodeGenerator> generator = [&] { auto tmp_0 = System::MakeObject<BarcodeGenerator>(EncodeTypes::Code39Standard, System::String(u"1234567890"));
// 在上面设置标题
tmp_0->get_Parameters()->get_CaptionAbove()->set_Text(u"Caption Above");
// 设置可见性
tmp_0->get_Parameters()->get_CaptionAbove()->set_Visible(true);
// 在下面设置标题
tmp_0->get_Parameters()->get_CaptionBelow()->set_Text(u"Caption Below");
// 设置可见性
tmp_0->get_Parameters()->get_CaptionBelow()->set_Visible(true);
// 设置分辨率
tmp_0->get_Parameters()->set_Resolution(300);
return tmp_0; }();
generator->Save(System::String(u"barcode_caption.jpg"));
以下是带有上方和下方标题的条形码。
使用 C++ 扫描和读取条形码
现在让我们看看如何使用 Aspose.BarCode for C++ 扫描和读取条形码。以下是执行此功能的步骤。
- 创建 BarCodeReader 类的实例。
- 使用条形码的图像文件及其符号系统初始化 BarCodeReader 实例。
- 使用 BarCodeReader->Read() 方法检索条形码的文本和类型。
以下代码示例展示了如何使用 C++ 扫描和读取条形码。
// 创建 BarcodeGenerator 类的实例
System::SharedPtr<BarCodeReader> reader = System::MakeObject<BarCodeReader>(u"Code128.png", DecodeType::Code128);
while (reader->Read())
{
// 显示代码文本和符号系统类型
System::Console::WriteLine(System::String(u"CodeText: ") + reader->GetCodeText());
System::Console::Write(System::String(u"Symbology Type: ") + reader->GetCodeType());
}
reader->Close();
使用 C++ 读取具有多种符号的条形码
大多数情况下,图像仅包含一个条形码符号系统。但是,在某些情况下,图像可能同时包含多个符号的条形码。在这种情况下,您可以提供要扫描和读取的条形码符号列表。
以下代码示例显示了如何使用 C++ 扫描具有多个条形码符号的图像。
// 设置条码符号
System::ArrayPtr<System::SharedPtr<BaseDecodeType>> objArray = System::MakeArray<System::SharedPtr<Aspose::BarCode::BarCodeRecognition::BaseDecodeType>>({ DecodeType::Code39Standard, DecodeType::Pdf417 });
// 初始化 BarCodeReader,循环调用 Read() 方法并显示代码文本和符号类型
System::SharedPtr<BarCodeReader> reader = System::MakeObject<BarCodeReader>(u"RecognizingMultipleSymbologies.png", objArray);
while (reader->Read())
{
System::Console::WriteLine(System::String(u"Codetext: ") + reader->GetCodeText());
System::Console::WriteLine(System::String(u"Symbology type: ") + reader->GetCodeType());
}
reader->Close();
结论
在本文中,您学习了如何使用 C++ 生成具有不同符号的条形码。此外,还结合 C++ 代码示例讨论了扫描和读取条码的过程。您可以使用 文档 探索有关 API 的更多信息。