この記事では、C++を使用してプログラムでバーコードを生成する方法を示します。また、C++アプリケーション内にバーコードスキャナーまたはリーダーを実装する方法についても学習します。

C++でバーコードを生成する

バーコードは、機械可読形式でデータを視覚的に表すために使用されます。この技術は、特に店舗やスーパーマーケットに導入されている自動チェックアウトシステムで役立つことが証明されています。最近市場に出回っているほとんどすべての製品には、バーコードが付いています。このバーコードの普及により、さまざまな分野でのユースケースが拡大しました。数年前、バーコードの重要性に注目して、Asposeはさまざまなプラットフォーム向けのバーコードジェネレーターとリーダーAPIをリリースしました。この記事は、バーコードを動的に生成して読み取るために、C++アプリケーション内にバーコードジェネレーターとリーダーを実装する方法を紹介することを目的としています。

C++バーコードジェネレーターとリーダーAPI

Aspose.BarCode for C++は、多数の1Dおよび2Dバーコードを生成および読み取るための機能豊富なC++APIです。バーコードを生成、カスタマイズ、および高品質の画像にエクスポートできます。ライブラリファイルは、ダウンロードセクションからダウンロードできます。ダウンロード可能なパッケージには、デモC++アプリケーションも含まれています。

以下は、C++用のAspose.BarCodeを使用して生成できるバーコードシンボルのリストです。

  • Code128
  • Code39 Standard
  • Code39 Extended
  • Code93 Standard
  • Code93 Extended
  • Code11
  • Codabar
  • BooklandEAN
  • EAN13
  • EAN8
  • EAN128
  • Interleaved2of5
  • Standard2of5
  • MSI
  • Postnet
  • Planet
  • UPCA
  • UPCE
  • EAN14(SCC14)
  • SSCC18
  • ITF14
  • BarCode supplement
  • Pdf417
  • QR
  • Datamatrix
  • Matrix 2 of 5
  • PZN (Pharma Zentral Nummer, Pharmazentralnummer barcode)
  • Deutsche Post Identcode
  • Aztec
  • Australia Post

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++を使用して2Dバーコード(QRまたはその他)を生成する

前の例では、1次元バーコードを作成しました。次に、QRコードなどの2次元バーコードを作成しましょう。 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);

上記のコードを使用して、以下のQRコードが生成されます。

C++を使用してカスタマイズされたバーコードを生成する

バーコードの外観をカスタマイズすることもできます。たとえば、前景色、背景色、サイズ、境界線のスタイルなどを設定できます。以下では、C++用のAspose.BarCodeを使用してバーコードをカスタマイズする手順を説明しました。

  • 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++を使用してバーコードをスキャンして読み取る

ここで、C++用のAspose.BarCodeを使用してバーコードをスキャンして読み取る方法を見てみましょう。この機能を実行する手順は次のとおりです。

  • 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++を使用して複数のシンボル体系を持つバーコードを読み取る

ほとんどの場合、画像には1つのバーコードシンボルのみが含まれます。ただし、場合によっては、画像に同時に複数のシンボルのバーコードが含まれることがあります。このような場合、スキャンして読み取るバーコードシンボルのリストを提供できます。

次のコードサンプルは、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の詳細を調べることができます。

関連項目