フッターコンテンツにスキップ
他のコンポーネントと比較する

ZXingでのバーコードスキャン方法 (C#開発者向け)

バーコードは、データを明確で機械が読み取れる形で提示します。 最初は、バーコードは異なる幅と間隔を持つ平行線で構成され、データの表現として機能していました。 これらの従来の線形または一次元(1D)のバーコードは、バコードリーダーと呼ばれる専門の光学装置で読み取ることができました。 しかし、バーコードの進化により、2次元(2D)バーコード、またはマトリクスコードとも呼ばれるものが発明されました。 伝統的なバーコードとは異なり、2Dバーコードはバーの代わりに長方形、点、六角形といったパターンを利用します。 これらの2Dバーコードを読み取るための特定の光学スキャナーのセットアップが利用可能であり、別の方法としては、コンピュータに接続されたデジタルカメラを使用してデコードソフトウェアを実行する方法があります。 さらに、スマートフォンなどのモバイルデバイスは、内蔵カメラと専用アプリケーションを活用して2Dバーコードスキャナーとして機能することができます。

ZXingバーコードスキャナー

Zebra Crossing、よくZXingとして知られるものは、Javaで開発され、他の言語にも移植されたオープンソースの多フォーマット1D/2Dバーコード画像処理ツールキットです。 ZXingを構成するモジュールには、コアな画像デコードライブラリ、Java特有のクライアントコード、AndroidクライアントのBarcode Scannerがあります。 それに基づいて多数の独立したオープンソースプロジェクトが構築されています。

1. 特徴

  • URL、連絡先情報、カレンダーイベントなどを追跡できます。
  • Java SEアプリケーション向けに作成されました。
  • バーコードスキャナー統合が可能です。
  • シンプルなGoogle Glassアプリケーションです。

2. .NETでのZXingの使用

Visual Studioを開き、ファイルメニューから「新しいプロジェクト」を選び、「コンソールアプリケーション」を選択します。 この記事では、C#のコンソールアプリを選んでいます。

ZXingでのバーコードスキャン方法(C#開発者向け)図1

プロジェクト名とファイルパスを適切なテキストボックスに入力してください。 次に、Createボタンをクリックして必要な.NET Frameworkを選択します。

コンソールアプリケーションを選んだ場合、プロジェクトはその構造を作成し、program.csファイルを開いてプログラムのコードを入力し、ビルドまたは実行することができます。

ZXingでのバーコードスキャン方法(C#開発者向け)図2

2.1 ZXing Barcodeのインストール

ZXingライブラリをインストールするには、NuGetパッケージマネージャーコンソールに次のコマンドを入力してください。

Install-Package ZXing.Net.Bindings.Windows.Compatibility

また、NuGetパッケージ管理ツールを使用してパッケージを取得することもできます。 以下のイラストのようにしてください。 選択した最初の結果をインストールしてみてください。

ZXingでのバーコードスキャン方法(C#開発者向け)図3

2.2 ZXingを使ったバーコードの読み書き

次のサンプルコードを使用してバーコードを生成できます。 ZXingを使用すると、10種類以上のバーコード形式を作成できます。

using ZXing.Windows.Compatibility;

var options = new QrCodeEncodingOptions
{
    Width = 250,
    Height = 250,
};

var writer = new BarcodeWriter();
writer.Format = BarcodeFormat.QR_CODE;
writer.Options = options;

// Encode the string into a QR code bitmap image
System.Drawing.Bitmap _bitmap = writer.Write("Hello world");

// Save the bitmap as a PNG file
_bitmap.Save("Demo1.png");
using ZXing.Windows.Compatibility;

var options = new QrCodeEncodingOptions
{
    Width = 250,
    Height = 250,
};

var writer = new BarcodeWriter();
writer.Format = BarcodeFormat.QR_CODE;
writer.Options = options;

// Encode the string into a QR code bitmap image
System.Drawing.Bitmap _bitmap = writer.Write("Hello world");

// Save the bitmap as a PNG file
_bitmap.Save("Demo1.png");
Imports ZXing.Windows.Compatibility

Private options = New QrCodeEncodingOptions With {
	.Width = 250,
	.Height = 250
}

Private writer = New BarcodeWriter()
writer.Format = BarcodeFormat.QR_CODE
writer.Options = options

' Encode the string into a QR code bitmap image
Dim _bitmap As System.Drawing.Bitmap = writer.Write("Hello world")

' Save the bitmap as a PNG file
_bitmap.Save("Demo1.png")
$vbLabelText   $csharpLabel

上記のコードでは、QrCodeEncodingOptionsの高さと幅を設定しています。 次に、BarcodeWriterのインスタンスを作成します。 BarcodeWriterには、バーコードフォーマットをQRコードとして設定します。 以前に作成したQRコードオプションをライターに割り当てます。 BarcodeWriterWriteメソッドは、指定された文字列をバーコードとしてエンコードし、それをビットマップ画像として返します。 画像はビットマップのSaveメソッドを使用して保存されます。以下はコードの結果です。

ZXingでのバーコードスキャン方法(C#開発者向け)図4

次のコードサンプルは、ZXingを使用してバーコードをデコードする方法を示しています。

using ZXing.Windows.Compatibility;

// Load the barcode image into a bitmap
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");

// Create a BarcodeReader object
var reader = new BarcodeReader();

// Decode the bitmap into a result
var result = reader.Decode(barcodeBitmap);

if (result != null)
{
    // Output the decoded text to the console
    Console.WriteLine(result.Text);
    Console.ReadKey();
}
using ZXing.Windows.Compatibility;

// Load the barcode image into a bitmap
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");

// Create a BarcodeReader object
var reader = new BarcodeReader();

// Decode the bitmap into a result
var result = reader.Decode(barcodeBitmap);

if (result != null)
{
    // Output the decoded text to the console
    Console.WriteLine(result.Text);
    Console.ReadKey();
}
Imports ZXing.Windows.Compatibility

' Load the barcode image into a bitmap
Private barcodeBitmap = CType(System.Drawing.Bitmap.FromFile("demo.png"), System.Drawing.Bitmap)

' Create a BarcodeReader object
Private reader = New BarcodeReader()

' Decode the bitmap into a result
Private result = reader.Decode(barcodeBitmap)

If result IsNot Nothing Then
	' Output the decoded text to the console
	Console.WriteLine(result.Text)
	Console.ReadKey()
End If
$vbLabelText   $csharpLabel

上記のコードでは、まず画像をビットマップにロードし、それからBarcodeReaderオブジェクトを作成します。 Decode関数により、ビットマップをパラメーターとして渡すことができ、結果を複数のフォーマットで返すことができます。 Textプロパティを使用して、バーコードにエンコードされたテキストを取得します。

ZXingでのバーコードスキャン方法(C#開発者向け)図5

IronBarcode

このバーコードライブラリを使うと、バーコードの読み取りや生成が簡単です。 IronBarcodeのライブラリを使えば、動的なバーコードを簡単に作成できます。 このシンプルなライブラリは数行のコードを記述するだけでバーコードを生成でき、バーコードイメージのエンコードを助けます。 IronBarcodeは、C#やVB.NETといった言語でバーコードを生成することを可能にします。

1. 特徴

  • IronBarcodeは、UPC A/E、Databar、EAN 8/13、MSI、Code 39/93/128、CodaB、RSS 14/Expanded、ITFを含む大多数のバーコード画像フォーマットとQR規格を読み書きできます。
  • スキャンやリアルタイムビデオフレームのスキャン中に、IronBarcodeは回転、ノイズ、歪み、スキューリングを修正することができます。 IronBarcodeは、作成する際にバーコード画像を自動的に前処理して、読み取りの精度と速度を向上させます。 動的バーコードは、コンテンツの変更を許可するため、頻繁に使用されます。
  • IronBarcodeの多くのコアとスレッドを使用する能力は、バッチ処理サーバーのために有利です。
  • シングルページおよびマルチページのドキュメントにおいて、IronBarcodeは1つ以上のバーコードを自動的に見つけることができます。

2. IronBarcodeの使用

このソリューションでIronBarcodeライブラリを利用するためには、必要なパッケージをダウンロードする必要があります。 これを行うには、NuGetパッケージマネージャーコンソールで次のコマンドを使用してください。

Install-Package BarCode

代わりに、NuGetパッケージマネージャーを使用して「Barcode」パッケージを検索し、表示されるすべての検索結果から必要なパッケージを選んでダウンロードできます。 その中から必要なパッケージを選択してプログラムにダウンロードできます。

ZXingでのバーコードスキャン方法(C#開発者向け)図6

3. IronBarcodeを使ったバーコードの読み書き

IronBarcodeライブラリを使用することで、わずか数行のコードでバーコード画像を迅速に作成できます。 加えて、作成されたバーコードを別の画像ファイルとして保存することができます。以下は、コンソールプログラムを使用したバーコードラベルの作成用のC#サンプルコードです。

using IronBarCode;

// Create a QR code with a medium error correction level
QRCodeWriter.CreateQrCode("Your text here", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("demo.png");
using IronBarCode;

// Create a QR code with a medium error correction level
QRCodeWriter.CreateQrCode("Your text here", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("demo.png");
Imports IronBarCode

' Create a QR code with a medium error correction level
QRCodeWriter.CreateQrCode("Your text here", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("demo.png")
$vbLabelText   $csharpLabel

このコードは中程度のエラー訂正レベルを使用して500x500ピクセルのグラフィックを生成し、その後、SaveAsPngメソッドを使用してファイル位置に保存します。

次のコード例は、以前の例で作成したQRコードにエンコードされたテキストを読み取ります。

using IronBarCode;

// Load the QR code image into a bitmap
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");

// Read the barcode image
var reader = IronBarCode.BarcodeReader.Read(barcodeBitmap);

// Output the decoded value to the console
Console.WriteLine(reader.Values[0]);
Console.ReadKey();
using IronBarCode;

// Load the QR code image into a bitmap
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");

// Read the barcode image
var reader = IronBarCode.BarcodeReader.Read(barcodeBitmap);

// Output the decoded value to the console
Console.WriteLine(reader.Values[0]);
Console.ReadKey();
Imports IronBarCode

' Load the QR code image into a bitmap
Private barcodeBitmap = CType(System.Drawing.Bitmap.FromFile("demo.png"), System.Drawing.Bitmap)

' Read the barcode image
Private reader = IronBarCode.BarcodeReader.Read(barcodeBitmap)

' Output the decoded value to the console
Console.WriteLine(reader.Values(0))
Console.ReadKey()
$vbLabelText   $csharpLabel

まず画像をビットマップに読み込み、次にBarcodeReaderクラスのReadメソッドを使って画像を読み込みます。 Readメソッドから返されたBarcodeResultsオブジェクトにあるValuesプロパティを使って、QRコードから読み取られたコンテンツを取得します。

ZXingとの比較情報とIronBarcodeの詳細については、この次のブログ記事をご覧ください。

当社のバーコードの読み取りチュートリアルもIronBarcodeを使用したバーコードやQRコードの読み方に関する詳細情報を提供しています。 IronBarcodeに関するコードチュートリアルの詳細をもっと知るには。

結論

ZXingバーコードスキャナーは高品質なバーコードを作成できますが、旧式でサポートされているバーコード形式が少ないです。 また、ドキュメンテーションや製品サポートが限られています。

一方、IronBarcodeは非常に効率的で柔軟性があり、多くのオペレーティングシステムで動作可能です。 IronBarcodeはバーコードで使用する色、サイズ、間隔、文字を変更することができます。 またクリスタルレポートもサポートしています。

開発者はIronBarcodeを無料で使用することができます。 ユーザーはライセンスを購入することで、追加機能へのアクセスと1年間のサポートおよび製品アップデートを受け取ることができます。

ZXingはその所有者の登録商標です。 このサイトは、ZXingと提携したり承認されたりスポンサーされたりしていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。)}]

よくある質問

C# で HTML を PDF に変換するにはどうすればいいですか?

IronPDF の RenderHtmlAsPdf メソッドを使用して、HTML 文字列を PDF に変換できます。RenderHtmlFileAsPdf を使用して HTML ファイルを PDF に変換することもできます。

IronBarcodeとZXingの違いは何ですか?

IronBarcodeはZXingと比較して、より多くの柔軟性を提供し、より幅広いバーコードフォーマットをサポートしています。ZXingはバーコードの作成において効果的ですが、フォーマットのサポートとドキュメントが制限されています。IronBarcodeは効率的で、さまざまなオペレーティングシステムと互換性があります。

モバイルデバイスでバーコードをスキャンするにはどうすればいいですか?

ZXing AndroidクライアントのBarcode Scannerを使用して、デバイスのカメラを利用してバーコードをスキャンできます。より強力な機能が必要な場合は、IronBarcodeをモバイルアプリケーションに統合して、バーコードスキャンの能力を向上させることができます。

IronBarcodeは2Dバーコードをサポートしていますか?

はい、IronBarcodeはQRコードを含む1Dおよび2Dバーコードの両方をサポートしており、バーコードの読み取りと作成の多様性を提供します。

IronBarcodeは動的バーコード作成を処理できますか?

IronBarcodeは動的バーコード作成をサポートしており、特定の要件を満たすためにバーコードの色、サイズ、間隔、文字をカスタマイズできます。

.NETプロジェクトにIronBarcodeを統合するには何が必要ですか?

.NETプロジェクトにIronBarcodeを統合するには、NuGetパッケージマネージャーコンソールを使用してInstall-Package IronBarcodeを使用してパッケージをインストールするか、NuGetパッケージマネージャーで見つけてください。

IronBarcodeの使用には費用がかかりますか?

IronBarcodeは無料トライアルを提供していますが、ライセンスを購入すると追加の機能、製品の更新、1年間のサポートが提供されます。

IronBarcodeはビデオフレームからバーコードを読み取ることができますか?

はい、IronBarcodeはリアルタイムビデオフレームを処理し、回転、ノイズ、歪み、傾きの補正を行い、バーコードスキャンの精度と速度を向上させます。

ZXingのバーコードスキャン機能はどのようなものですか?

ZXingは主に1Dおよび2Dバーコード用のオープンソースツールキットを提供しており、コア画像デコードライブラリとAndroidクライアントBarcode Scannerを含んでいます。

IronBarcodeがサポートしているプログラミング言語は何ですか?

IronBarcodeはC#とVB.NETをサポートしており、.NETフレームワークを使用する開発者にとって理想的です。

Jordi Bardia
ソフトウェアエンジニア
Jordiは、最も得意な言語がPython、C#、C++であり、Iron Softwareでそのスキルを発揮していない時は、ゲームプログラミングをしています。製品テスト、製品開発、研究の責任を分担し、Jordiは継続的な製品改善において多大な価値を追加しています。この多様な経験は彼を挑戦させ続け、興味を持たせており、Iron Softwareで働くことの好きな側面の一つだと言います。Jordiはフロリダ州マイアミで育ち、フロリダ大学でコンピュータサイエンスと統計学を学びました。