IRONQRの使用

.NET 6でQRCoderとIronQRを比較してQRコードを生成する方法

ジョルディ・バルディア
ジョルディ・バルディア
2024年4月29日
共有:

C#(シーシャープ)でのQRコード生成;

C#(シーシャープ)アプリケーションでQRコードを作成することは、開発者にとって一般的な要件であり、特に製品の識別、チケットの発券、URLやその他のデータの共有を簡単に行うアプリケーションに適しています。 C#(シーシャープ)でQRコードを生成するためのライブラリはいくつかあります。 2つの注目すべきオプションは、QRCoderIronQRです。 この記事では、.NET 6で作業する開発者に関連する機能、使いやすさ、パフォーマンス、その他の要素を比較しながら、これらのライブラリの詳細な比較について掘り下げていきます。

.NET 6でQRCoderとIronQRを比較してQRコードを生成する方法

  1. QRコードを生成するための新しいVisual Studioプロジェクトを作成する

  2. QRCoderとIronQRのNuGetパッケージをインストールして比較する。

  3. QRCoderとIronQRを使ってQRコードを作成する

  4. QRCoderとIronQRのカスタマイズオプション

QRCoder

QRCoderは、C#で記述されたオープンソースのライブラリで、QRコードの実装を行い、ISO/IEC 18004で定義されたQRコードを任意の.NETアプリケーションで生成することができます。 他のライブラリやネットワークスタックに依存しない、軽量で使いやすいライブラリだ。

QRCoderの主な特徴と利点は以下の通りです:

1. 使いやすさ

C# QRCoder は、シンプルで直感的なAPIを提供しており、開発者が最小限の労力でQRコード/ QRコードテキストを生成することを容易にします。 そのシンプルさにより、あらゆるスキルレベルの開発者がQRコード生成をプロジェクトに素早く統合することができます。

2.豊富なカスタマイズ・オプション

QRCoderの際立った特徴の1つは、特定の要件に応じてQRコードをカスタマイズできることです。 開発者は、エラー訂正レベル、サイズ、色などのパラメータを調整し、QRコード内にロゴや画像を埋め込むこともできる。

3.複数のエンコーディングフォーマット

QRCoderはさまざまなエンコード形式をサポートしており、開発者はさまざまなタイプのデータをQRコードにエンコードすることができます。 プレーンテキスト、URL、連絡先情報、Wi-Fi認証情報など、QRCoderは幅広いデータ形式を扱うことができます。

4.高品質出力

C# QRCoderが生成するQRコードは高品質で、さまざまなデバイスやスキャン条件下での読み取り可能性と信頼性を保証します。 この信頼性は、QRコードが物理的インタラクションとデジタルインタラクションの橋渡しをするアプリケーションにとって極めて重要である。

5.オープンソースと活発な開発

C# (シーシャープ) QRCoderはオープンソースプロジェクトであり、開発者が開発に貢献し、継続的な改善とアップデートを保証します。 このような積極的なコミュニティへの参加は、技術革新を促進し、図書館が常に進化し続けるテクノロジーの中で適切な存在であり続けることを保証する。

IronQR

IronQR は、Iron Software によって開発および維持されている強力な C# QR コード ライブラリです。 C#のソフトウェアエンジニアは、.NETアプリケーションやWebサイトでQRコード(シーシャープ)を検出、読み取り、作成することができます。 IronQRの主な特徴は以下の通りです:

QRコード生成

IronQRは、QRコードの生成を高度にカスタマイズ可能にします。 サイズ変更、余白、ボーダー、再カラーリングなど、さまざまなオプションを使ってQRコードを作成できます。

using IronQr;
using IronSoftware.Drawing;
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
using IronQr;
using IronSoftware.Drawing;
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
Imports IronQr
Imports IronSoftware.Drawing
' Prepare a QR Code object
Private theQrGen As QrCode = QrWriter.Write("Awesome IronQR")
' Save QR Code to memory
Private myQrImage As AnyBitmap = theQrGen.Save()
' Save QR Code image to disk
myQrImage.SaveAs("awesome.png")
$vbLabelText   $csharpLabel

QRコード読み取り

IronQRはQRコード検出に高度な機械学習モデルを使用しています。 このモデルは、正確で高速なQRコード読み取りを保証します。 IronQRは、JPG、PNG、SVG、bmp、gifやtiffのようなマルチページ画像を含むさまざまな画像形式からQRコードを読み取ることをサポートします。

using IronQr;
using IronSoftware.Drawing;
using System.Collections.Generic;
// Read QR code
var inputBmp = AnyBitmap.FromFile("awesome.png");
// Load the image into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create the QR Reader object
QrReader reader = new QrReader();
// Read the Input an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
using IronQr;
using IronSoftware.Drawing;
using System.Collections.Generic;
// Read QR code
var inputBmp = AnyBitmap.FromFile("awesome.png");
// Load the image into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create the QR Reader object
QrReader reader = new QrReader();
// Read the Input an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
Imports IronQr
Imports IronSoftware.Drawing
Imports System.Collections.Generic
' Read QR code
Private inputBmp = AnyBitmap.FromFile("awesome.png")
' Load the image into QrImageInput
Private imageInput As New QrImageInput(inputBmp)
' Create the QR Reader object
Private reader As New QrReader()
' Read the Input an get all embedded QR Codes
Private results As IEnumerable(Of QrResult) = reader.Read(imageInput)
$vbLabelText   $csharpLabel

クロスプラットフォーム互換性

  1. デスクトップ: Windowsデスクトップアプリケーション(WPF & MAUI)で動作します。

  2. モバイル:XamarinとMAUIに対応。

  3. ウェブ:BlazorとWebFormsをサポート。

  4. コンソール:アプリとライブラリ環境。

  5. クラウド:Docker、Azure、AWS。

データのエンコード

QRコードには、テキスト、URL、バイト、数字など、さまざまな種類のデータをエンコードできます。

エラー訂正

IronQRは、詳細なエラーメッセージとカスタムエラー修正オプションを提供します。

数百万人に信頼されているIronQRは、その信頼性と使いやすさで世界中のエンジニアに信頼されています。 IronQRの使用を開始するには、NuGetを通じてインストールすることができます。

ステップ1:QRコードを生成するための新しいVisual Studioプロジェクトを作成する

コードを始めるために、Visual Studio プロジェクトを作成しましょう。 Microsoft Visual Studio 2022を開き、"Create new project "オプションを選択する。

QRCoderを使用してQRコードを生成する方法と.NET 6のIronQRとの比較: 図1 - Visual Studioを開き、「新しいプロジェクトを作成」オプションをクリック

テンプレートリストからコンソールアプリケーションテンプレートを選択します。

QRCoderとIronQRを比較して.NET 6でQRコードを生成する方法: 図2 - プロジェクトタイプを「コンソールアプリ」として選択します。

次に、プロジェクト名とソリューション名を入力する。 プロジェクトファイルを保存するパスを選択する

QRCoder を使用して QR コードを生成する方法と IronQR を .NET 6 で比較する: 図3 - プロジェクト名、場所、ソリューション名を指定してプロジェクトを構成し、「次へ」をクリックします。

必要な .NET バージョンを選択してください。 この記事を書いている時点では、最新の.NET 8フレームワークを使うことにする。

QRCoderを使用してQRコードを生成する方法と.NET 6におけるIronQRの比較: 図4 - 最新の.NET Frameworkバージョンを選択し、作成ボタンをクリックします。

作成ボタンをクリックすると、プロジェクトが作成され、開発の準備が整います。

ステップ2: QRCoderとIronQR NuGetパッケージのインストール

QRCoder NuGet パッケージは、以下のように Visual Studio の NuGet パッケージ マネージャーを使用してインストールすることができます。

QRCoderとIronQRを使用してQRコードを生成する方法(.NET 6にて):図5 - NuGetパッケージマネージャーの検索バーで「QRCoder」と検索し、プロジェクトを選択してインストールボタンをクリックすることで、ソリューション用のNuGetパッケージ管理を使用してQRCoderをインストールします。

または、以下のコマンドを使用してNuGetパッケージ・マネージャー・コンソールからインストールする。

dotnet add package QRCoder --version 1.4.3
dotnet add package QRCoder --version 1.4.3
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package QRCoder --version 1.4.3
$vbLabelText   $csharpLabel

QRCoder NuGetパッケージは、NuGetウェブサイトから入手可能です。

QRCoderを使用してQRコードを生成する方法とIronQRを.NET 6で比較: 図6 - QRCoder NuGetパッケージ

IronQR は、以下に示す Visual Studio NuGet パッケージ マネージャーを使用して同様にインストールすることもできます。

QRCoderを使用してQRコードを生成する方法をIronQRと比較する - .NET 6: 図7 - 「IronQR」をNuGetパッケージマネージャーの検索バーで検索し、プロジェクトを選択してインストールボタンをクリックすることで、ソリューション用のNuGetパッケージを管理してIronQRをインストールします。

また、NuGetパッケージ・マネージャー・コンソールから、以下のコマンドを使用する。

dotnet add package IronQR --version 2024.4.1
dotnet add package IronQR --version 2024.4.1
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronQR --version 2024.4.1
$vbLabelText   $csharpLabel

QRCoderを使用してQRコードを生成する方法とIronQRの比較: .NET 6における図8 - IronQR NuGetパッケージ

ステップ 3: QRCoderとIronQRを使ってQRコードを作成する

2つのライブラリでQRコードを作成するには、簡単なコードが必要です。

QRCoder

次のコードは、QRCoder を使用して最初の QR コードを生成する方法を示しています。

using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
    public static void Main()
    {
            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
            using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
            {
                var qrCodeImage = qrCode.GetGraphic(20);
                var file = Image.FromStream(new MemoryStream(qrCodeImage));
                file.Save("QrCoderDemo1.png");
            }
        }
    }
}
using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
    public static void Main()
    {
            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
            using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
            {
                var qrCodeImage = qrCode.GetGraphic(20);
                var file = Image.FromStream(new MemoryStream(qrCodeImage));
                file.Save("QrCoderDemo1.png");
            }
        }
    }
}
Imports QRCoder
Imports System.Drawing
Namespace QRCoderVsIronQR
Public Class Program
	Public Shared Sub Main()
			Using qrGenerator As New QRCodeGenerator()
			Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
			Using qrCode = New QRCoder.BitmapByteQRCode(qrCodeData)
				Dim qrCodeImage = qrCode.GetGraphic(20)
				Dim file = Image.FromStream(New MemoryStream(qrCodeImage))
				file.Save("QrCoderDemo1.png")
			End Using
			End Using
			End Using
	End Sub
End Class
End Namespace
$vbLabelText   $csharpLabel

コードの説明

  1. QRCodeGeneratorを作成し、CreateQrCodeメソッドを呼び出してQRコード・グラフィックを生成する。

  2. 次に、QRCoder.BitmapByteQRCodeメソッドを使用して、GetGraphicメソッドからバイト配列を取得します。

  3. 次に、Image.FromStreamメソッドを使用してバイトストリームを画像として保存します。

  4. 出力されたQRコードは以下の通り。

出力

QRCoderとIronQRを比較して.NET 6でQRコードを生成する方法: 図9 - 出力: QRCoderライブラリを使用して生成されたQRコード画像。

IronQR

次のコードはIronQRを使ってQRコードを生成する方法を示しています:

using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
    public static void Main()
    {
            // Prepare a QR Code object
            QrCode theQrGen = QrWriter.Write("Awesome IronQR");
            // Save QR Code to memory
            AnyBitmap myQrImage = theQrGen.Save();
            // Save QR Code image to disk
            myQrImage.SaveAs("awesome.png");
        }
    }
}
using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
    public static void Main()
    {
            // Prepare a QR Code object
            QrCode theQrGen = QrWriter.Write("Awesome IronQR");
            // Save QR Code to memory
            AnyBitmap myQrImage = theQrGen.Save();
            // Save QR Code image to disk
            myQrImage.SaveAs("awesome.png");
        }
    }
}
Imports IronQr
Imports IronSoftware.Drawing
Namespace QrCodeWithIronQR
Public Class Program
	Public Shared Sub Main()
			' Prepare a QR Code object
			Dim theQrGen As QrCode = QrWriter.Write("Awesome IronQR")
			' Save QR Code to memory
			Dim myQrImage As AnyBitmap = theQrGen.Save()
			' Save QR Code image to disk
			myQrImage.SaveAs("awesome.png")
	End Sub
End Class
End Namespace
$vbLabelText   $csharpLabel

すでにお分かりのように、コードの量が違う。 IronQRのコード生成はより少ないコードで済む。

コードの説明

  1. 私たちは、QrWriter.Write() メソッドを使用し、コンテンツを渡すことで QR コードを作成します。

  2. 次に、Save() メソッドを使用して QR コードをメモリに保存します。

  3. 最後に、SaveAs() メソッドを使用して画像を保存します。

出力

試用版のライブラリを使用しているため、出力にはIronQRの透かしが入っています。 ライセンス版では、これは取り除かれる。

QRCoderを使用してQRコードを生成する方法とIronQRを.NET 6で比較: 図10 - 出力: IronQRを使用して生成されたQRコード画像

ステップ4 : QRCoderとIronQRによるカスタマイズオプション

どちらのライブラリもカスタマイズ・オプションをサポートしている。 いくつかのオプションを見てみよう。

以下のようにQRCoderでQRコードの色を設定できます。

using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
    public static void Main()
    {
            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
            using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
            {                
                var qrCodeImage = qrCode.GetGraphic(20, [255,0,0], [0,255, 0]); // can also use html hex color notation
                var file = Image.FromStream(new MemoryStream(qrCodeImage));
                file.Save("QrCoderDemo1.png");
            }
        }
    }
}
using QRCoder;
using System.Drawing;
namespace QRCoderVsIronQR
{
public class Program
{
    public static void Main()
    {
            using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
            using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
            using (var qrCode = new QRCoder.BitmapByteQRCode(qrCodeData))
            {                
                var qrCodeImage = qrCode.GetGraphic(20, [255,0,0], [0,255, 0]); // can also use html hex color notation
                var file = Image.FromStream(new MemoryStream(qrCodeImage));
                file.Save("QrCoderDemo1.png");
            }
        }
    }
}
Imports QRCoder
Imports System.Drawing
Namespace QRCoderVsIronQR
Public Class Program
	Public Shared Sub Main()
			Using qrGenerator As New QRCodeGenerator()
			Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
			Using qrCode = New QRCoder.BitmapByteQRCode(qrCodeData)
				Dim qrCodeImage = qrCode.GetGraphic(20, (255,0,0), (0,255, 0)) ' can also use html hex color notation
				Dim file = Image.FromStream(New MemoryStream(qrCodeImage))
				file.Save("QrCoderDemo1.png")
			End Using
			End Using
			End Using
	End Sub
End Class
End Namespace
$vbLabelText   $csharpLabel

コードの説明

  1. QRCodeGeneratorを作成し、CreateQrCodeメソッドを呼び出してQRコード・グラフィックを生成する。

  2. 次に、QRCoder.BitmapByteQRCode() メソッドを使用して、GetGraphic メソッドからバイト配列を取得します。

  3. GetGraphicでは、背景色と線の色を設定できる。 ラインの色には赤 [255,0,0] の R,G,B カラーを使用し、背景には緑 [0,255,0] を使用しました。

  4. 次に、Image.FromStream() メソッドを使用してバイトストリームを画像として保存します。

  5. 出力されたQRコードは以下の通り。

出力

QRコード生成方法: .NET 6でQRCoderを使用した場合とIronQRを比較: 図11 - 出力: QRCoderのカスタマイズ機能を使用して生成されたカラフルなQRコード画像。

次のコードのようにIronQR QRコード生成の色を設定できます。

using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
public class Program
{
    public static void Main()
    {
            // Set options
            QrOptions options = new QrOptions(QrErrorCorrectionLevel.Medium, 20);
            // Create QR
            QrCode myQr = QrWriter.Write("IronQR Generation Demo 1", options);
            // Style options
            AnyBitmap logoBmp = new AnyBitmap("logo.png");
            QrStyleOptions style = new QrStyleOptions
            {
                BackgroundColor = Color.Aqua,
                Dimensions = 300, // px
                Margins = 10, // px
                Color = Color.Red,
                Logo = new QrLogo
                {
                    Bitmap = logoBmp,
                    Width = 100,
                    Height = 100,
                    CornerRadius = 2
                }
            };
            // Save QR Code
            AnyBitmap qrImage = myQr.Save(style);
            // Save QR Code to local disk
            qrImage.SaveAs("advancedQr.png");
        }
    }
}
using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
public class Program
{
    public static void Main()
    {
            // Set options
            QrOptions options = new QrOptions(QrErrorCorrectionLevel.Medium, 20);
            // Create QR
            QrCode myQr = QrWriter.Write("IronQR Generation Demo 1", options);
            // Style options
            AnyBitmap logoBmp = new AnyBitmap("logo.png");
            QrStyleOptions style = new QrStyleOptions
            {
                BackgroundColor = Color.Aqua,
                Dimensions = 300, // px
                Margins = 10, // px
                Color = Color.Red,
                Logo = new QrLogo
                {
                    Bitmap = logoBmp,
                    Width = 100,
                    Height = 100,
                    CornerRadius = 2
                }
            };
            // Save QR Code
            AnyBitmap qrImage = myQr.Save(style);
            // Save QR Code to local disk
            qrImage.SaveAs("advancedQr.png");
        }
    }
}
Imports IronQr
Imports IronSoftware.Drawing
namespace QrCodeWithIronQR Public Class Program
	Public Shared Sub Main()
			' Set options
			Dim options As New QrOptions(QrErrorCorrectionLevel.Medium, 20)
			' Create QR
			Dim myQr As QrCode = QrWriter.Write("IronQR Generation Demo 1", options)
			' Style options
			Dim logoBmp As New AnyBitmap("logo.png")
			Dim style As New QrStyleOptions With {
				.BackgroundColor = Color.Aqua,
				.Dimensions = 300,
				.Margins = 10,
				.Color = Color.Red,
				.Logo = New QrLogo With {
					.Bitmap = logoBmp,
					.Width = 100,
					.Height = 100,
					.CornerRadius = 2
				}
			}
			' Save QR Code
			Dim qrImage As AnyBitmap = myQr.Save(style)
			' Save QR Code to local disk
			qrImage.SaveAs("advancedQr.png")
	End Sub
End Class
}
$vbLabelText   $csharpLabel

IronQRでは、多くのカスタマイズオプションがあります。 上記のプログラムでは、背景色、QRコードの色、余白のカスタマイズを試みました。 寸法を設定することもできる。

コードの説明

  1. まず、エラー訂正レベルを設定するオプション・オブジェクトを作成します。

  2. 次に、QrWriter.Write() メソッドを使用してQRコードを準備します

  3. 次に、QrStyleOptionsでスタイル・オプションを設定します。

  4. QRコードに背景色、前景色、余白、寸法、ロゴを設定します。

  5. そして、QRコード画像をローカルディスクに保存する。

出力

QRCoderとIronQRを.NET 6で使用してQRコードを生成する方法: 図12 - 出力: IronQRとそのカスタマイズ機能を使用して生成されたカラフルなQRコード画像。

ライセンス

QRCoder はMITライセンスに基づくパッケージであり、コミュニティの助けを借りて開発されています。 このパッケージは小予算のプロジェクトに適している。 ユーザーは、コミュニティが問題を解決するのを待つか、プルリクエストが承認されたコードを修正してGitリポジトリにプッシュする必要がある。

IronQRはアプリケーションで使用されます。 Iron Softwareからの支援があります。

IronQR を取得できます。 取得したキーは、ここでappSettings.jsonファイルに配置する必要がある:

{
   "IronQR.License.LicenseKey":"myKey"
}
{
   "IronQR.License.LicenseKey":"myKey"
}
If True Then
   "IronQR.License.LicenseKey":"myKey"
End If
$vbLabelText   $csharpLabel

結論

C# QRCoderIronQR の選択は、最終的にプロジェクトの具体的な要件に依存します。 多くのカスタマイズオプションがあるフリーでオープンソースのQRコード生成ライブラリが必要な場合は、そのシンプルさと豊富なカスタマイズオプションのために、C# QRCoderが好ましい選択かもしれません。

カスタマイズオプションを備えたQRコードの生成だけでなく、QRコードの読み取りもサポートするエンタープライズレベルのライブラリが必要な場合は、IronQRが最適な選択肢です。最終的に、IronQRライブラリとその多くの利点、およびIron Softwareからのサポート機能を使用することで、開発者は簡単に安心してエンタープライズアプリケーションを作成できます。

ジョルディ・バルディア
ソフトウェアエンジニア
ジョルディは、Iron Softwareでのスキルを活かしていないときには、ゲームプログラミングをしており、Python、C#、C++に最も堪能です。彼は製品テスト、製品開発、研究の責任を共有しており、継続的な製品改善に大きな価値をもたらしています。この多様な経験は彼を常に挑戦的で魅力的に保ち、彼はIron Softwareで働く一番好きな側面の一つだと言っています。ジョルディはフロリダ州マイアミで育ち、フロリダ大学でコンピューターサイエンスと統計学を学びました。
< 以前
C#でQRコード生成アプリケーションを作成する方法
次へ >
VB .NETでQRコードを生成する方法