在本文中,我將演示如何使用 C++ 以編程方式生成條形碼。您還將學習如何在您的 C++ 應用程序中實現條碼掃描器或讀取器。

在C++中生成條形碼

條形碼用於以機器可讀的形式直觀地表示數據。上述技術已被證明非常有用,尤其是在商店和超市部署的自動結賬系統中。現在市場上幾乎所有產品都帶有條形碼。條形碼的廣泛流行已將其用例擴展到各個領域。關注條碼的重要性,幾年前,Aspose 推出了適用於各種平台的條碼生成器和閱讀器 API。本文旨在展示如何在 C++ 應用程序中實現條碼生成器和讀取器以動態生成和讀取條碼。

C++ 條碼生成器和讀取器 API

Aspose.BarCode for C++ 是一個功能豐富的 C++ API,用於生成和讀取大量一維和二維條碼。它允許您生成、自定義條形碼並將其導出為高質量圖像。您可以從 下載 部分下載庫文件。可下載的軟件包還包含一個演示 C++ 應用程序供您使用。

以下是您可以使用 Aspose.BarCode for C++ 生成的條形碼符號列表:

  • 代碼128
  • Code39標準
  • Code39擴展
  • Code93標準
  • Code93擴展
  • 代碼11
  • 科達巴
  • 書城EAN
  • EAN13
  • EAN8
  • EAN128
  • 交錯2of5
  • 標準2 of 5
  • 微星
  • 郵網
  • 行星
  • 聯合會
  • 統一教育教育
  • EAN14(SCC14)
  • SSCC18
  • ITF14
  • 條碼補充
  • PDF417
  • 二維碼
  • 數據矩陣
  • 矩陣 2 of 5
  • PZN(Pharma Zentral Nummer,Pharmazentralnummer 條形碼)
  • 德國郵政代碼
  • 阿茲台克人
  • 澳大利亞郵政

使用 C++ 生成條形碼

使用 Aspose.BarCode 生成條形碼可以在幾行代碼內實現。以下是執行此操作的步驟。

以下代碼示例顯示瞭如何使用 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 碼。以下是創建二維碼的步驟。

以下代碼示例顯示瞭如何使用 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++自定義條碼的步驟。

以下代碼示例顯示瞭如何使用 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 的更多信息。

也可以看看