フッターコンテンツにスキップ
IRONQRの使用

C#で画像からQRを読む方法

QRコード(クイックレスポンスコード)は、製品のパッケージ、イベントチケット、メニュー、さらには名刺まで、あらゆるところにあります。 開発者として、画像から<a href="/csharp/qr/how-to/read-qr-codes-from-image/">QRコードを迅速かつ信頼性高く読み取ることができることは、強力な自動化およびユーザーインタラクション機能への扉を開くことができます。 このガイドでは、特に.NET用に構築された高性能QRコードライブラリIronQRを使用して、わずか数行のC#コードで画像からQRコードを読み取る方法を説明します。

在庫管理ソフトウェアの構築、2要素認証の統合、またはスクリーンショットからURLをデコードする場合でも、IronQRは簡単に利用できます。

IronQRとは何ですか?

IronQRは、.NET開発者用に開発された強力なC# QRコードライブラリで、強力なQRコードリーダーおよびライターの作成を目的としています。 IronQRはQRコードの生成とスキャンの両方に対応しており、さまざまな画像フォーマットから読み取ることができるため、デスクトップ、ウェブ、またはサーバーアプリケーションに理想的です。 このライブラリを使用すると、QRコードの認識と読み取りのプロセス全体を自動化するための正確なQRコードリーダーツールを作成できます。

主要機能

  • 簡単にQRコードを読み取り、生成します。
  • JPEG、PNG、BMPなどの画像フォーマットをサポート。
  • 高速パフォーマンスと正確な検出により、QRコードデータの簡単な抽出が可能です。
  • .NET Framework、.NET Core、.NET Standard (2.0+)、および.NET 6/7+プロジェクトで動作します。
  • クロスプラットフォームサポートを提供し、お気に入りのアプリ環境とオペレーティングシステムで作業可能。Windows、Linux、その他のサポートされている環境すべてです。

オープンソースの代替とは異なり、IronQRは企業向けの安定性商業ライセンス、および専門的なサポートに焦点を当てており、ビジネスクリティカルなアプリケーションに非常に適しています。

C#プロジェクトでのIronQRのセットアップ

QRコードをスキャンする前に、.NETアプリケーションでのIronQRのセットアップ方法を説明します。

NuGet経由でインストール

NuGetパッケージマネージャコンソールからIronQRを直接インストールできます:

Install-Package IronQR
Install-Package IronQR
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronQR
$vbLabelText   $csharpLabel

または、Visual StudioのNuGet GUIでIronQRを検索し、"インストール"をクリックします:

C#で画像からQRを読む方法: 図2 - IronQR NuGetパッケージマネージャ画面

名前空間の追加と基本設定

インストール後、あなたのC#ファイルに次の名前空間を含めてください:

using IronSoftware.Drawing;
using IronQR;
using IronSoftware.Drawing;
using IronQR;
Imports IronSoftware.Drawing
Imports IronQR
$vbLabelText   $csharpLabel

注意:Iron Software.Drawingはクロスプラットフォームで画像フォーマットを処理するために使用されます。

画像からQRコードを読む

画像ファイルから実際にQRコードを読み取る方法を見ていきましょう。

対応する画像フォーマット

IronQRは、次のような複数の画像フォーマットをサポートしています:

  • PNG
  • JPG/JPEG
  • BMP
  • GIF
  • TIFF

この柔軟性により、カメラのスナップショットからスキャンされたドキュメントまで、実質的にあらゆる画像ソースで作業できます。

基本コード例

このライブラリをどのように使用して簡単にQRコードをデコードできるか、詳しく見てみましょう。 イメージファイルから"Hello World!"というテキスト値を持つ単一のQRコードを読み取る最小の例を次に示します。Bitmapクラスとファイルストリームを使って画像をロードします:

using IronQr;
using IronSoftware.Drawing;
using System;
class Program
{
    static void Main()
    {
        // Load the image using a file stream
        using var stream = File.OpenRead("sample-qr.png");
        var bitmapImage = AnyBitmap.FromStream(stream);
        QrImageInput qrImageInput = new QrImageInput(bitmapImage );
        // Read the QR code
        QrReader qrReader = new QrReader();
        try
        {
     // Use the QR read method to read the values within your QR code(s)
            IEnumerable<QrResult> results = qrReader.Read(qrImageInput);
            // Output the decoded value
            foreach (var result in results)
            {
                Console.WriteLine("QR Code Value: " + result.Value);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error reading QR code: " + ex.Message);
        }
    }
}
using IronQr;
using IronSoftware.Drawing;
using System;
class Program
{
    static void Main()
    {
        // Load the image using a file stream
        using var stream = File.OpenRead("sample-qr.png");
        var bitmapImage = AnyBitmap.FromStream(stream);
        QrImageInput qrImageInput = new QrImageInput(bitmapImage );
        // Read the QR code
        QrReader qrReader = new QrReader();
        try
        {
     // Use the QR read method to read the values within your QR code(s)
            IEnumerable<QrResult> results = qrReader.Read(qrImageInput);
            // Output the decoded value
            foreach (var result in results)
            {
                Console.WriteLine("QR Code Value: " + result.Value);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error reading QR code: " + ex.Message);
        }
    }
}
Imports IronQr
Imports IronSoftware.Drawing
Imports System
Friend Class Program
	Shared Sub Main()
		' Load the image using a file stream
		Dim stream = File.OpenRead("sample-qr.png")
		Dim bitmapImage = AnyBitmap.FromStream(stream)
		Dim qrImageInput As New QrImageInput(bitmapImage)
		' Read the QR code
		Dim qrReader As New QrReader()
		Try
	 ' Use the QR read method to read the values within your QR code(s)
			Dim results As IEnumerable(Of QrResult) = qrReader.Read(qrImageInput)
			' Output the decoded value
			For Each result In results
				Console.WriteLine("QR Code Value: " & result.Value)
			Next result
		Catch ex As Exception
			Console.WriteLine("Error reading QR code: " & ex.Message)
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

コンソール出力

C#で画像からQRを読む方法: 図3 - QRコード値のコンソール出力

このコードはQRコード画像をロードし、最初に検出されたQRコードを読み、そのデコードされた内容を印刷します。 簡単かつ効果的です。ここからQRコードの値をさらに使用するために保存できます。

複数のQRコードを扱う

画像に複数のQRコードが含まれている場合(例:商品のラベルシート)、それらすべてを抽出することができます。 この例では、プログラムを通じて以下のQRコード画像を実行します:

C#で画像からQRを読む方法: 図4 - 複数のQRコードを含む画像

using IronQr;
using IronSoftware.Drawing;
using System;
class Program
{
    static void Main()
    {
        // Load the image from file
        var inputImage = AnyBitmap.FromFile("SampleCodes.png");
        QrImageInput qrImageInput = new QrImageInput(inputImage);
        // Read the QR code
        QrReader qrReader = new QrReader();
        IEnumerable<QrResult> results = qrReader.Read(qrImageInput);
        // Output the decoded value
        foreach (var result in results)
        {
            Console.WriteLine("QR Code Value: " + result.Value);
        }
    }
}
using IronQr;
using IronSoftware.Drawing;
using System;
class Program
{
    static void Main()
    {
        // Load the image from file
        var inputImage = AnyBitmap.FromFile("SampleCodes.png");
        QrImageInput qrImageInput = new QrImageInput(inputImage);
        // Read the QR code
        QrReader qrReader = new QrReader();
        IEnumerable<QrResult> results = qrReader.Read(qrImageInput);
        // Output the decoded value
        foreach (var result in results)
        {
            Console.WriteLine("QR Code Value: " + result.Value);
        }
    }
}
Imports IronQr
Imports IronSoftware.Drawing
Imports System
Friend Class Program
	Shared Sub Main()
		' Load the image from file
		Dim inputImage = AnyBitmap.FromFile("SampleCodes.png")
		Dim qrImageInput As New QrImageInput(inputImage)
		' Read the QR code
		Dim qrReader As New QrReader()
		Dim results As IEnumerable(Of QrResult) = qrReader.Read(qrImageInput)
		' Output the decoded value
		For Each result In results
			Console.WriteLine("QR Code Value: " & result.Value)
		Next result
	End Sub
End Class
$vbLabelText   $csharpLabel

Output

C#で画像からQRを読む方法: 図5 - QRコード値の出力

QRコードスキャンの一般的な利用ケース

画像からQRコードを読むことが価値のあるいくつかの現実世界のシナリオを以下に示します:

  • 在庫と資産管理: パッケージ画像からQRコードをスキャンすることでアイテム識別を自動化します。
  • 二要素認証(2FA): 2FAセットアップ画面のQRコードを解析してセキュアな設定を支援します。
  • モバイルアプリとの統合: 共有されたQRスクリーンショットをスキャンすることでモバイルURLやアプリ固有のディープリンクを起動します。
  • イベントチケット: Eメールで送信された、またはスクリーン上に表示されたQRコードを検証します。
  • 決済ゲートウェイ: フィンテックアプリケーション向けにQRコードに埋め込まれた支払データを抽出します。

これらのすべてのユースケースでは、迅速かつ正確な認識が重要です。それをIronQRは簡単に処理します。

トラブルシューティングのヒント

QRコードを読み取る際の問題が発生した場合、次の点を考慮してください:

画像の品質が悪い

ぼやけた画像や低解像度の画像は、QRコードの検出を困難にします。 可能な限り高品質の入力を使用してください。

QRコードが検出されない

画像が暗すぎないこと、コントラストが強いこと、QRコードが隠れていないことを確認してください。 QR領域に焦点を当てるために画像をトリミングしてみてください。

例外処理

破損したファイルや予期しないフォーマットを優雅に処理するために、必ずQR読み取りロジックをtry-catchブロックでラップしてください:

try
{
    IEnumerable<QrResult> results = qrReader.Read(qrImageInput);
    // Output the decoded value
    foreach (var result in results)
    {
        Console.WriteLine("QR Code Value: " + result.Value);
    }
}
catch (Exception ex)
{
    Console.WriteLine("Error reading QR code: " + ex.Message);
}
try
{
    IEnumerable<QrResult> results = qrReader.Read(qrImageInput);
    // Output the decoded value
    foreach (var result in results)
    {
        Console.WriteLine("QR Code Value: " + result.Value);
    }
}
catch (Exception ex)
{
    Console.WriteLine("Error reading QR code: " + ex.Message);
}
Try
	Dim results As IEnumerable(Of QrResult) = qrReader.Read(qrImageInput)
	' Output the decoded value
	For Each result In results
		Console.WriteLine("QR Code Value: " & result.Value)
	Next result
Catch ex As Exception
	Console.WriteLine("Error reading QR code: " & ex.Message)
End Try
$vbLabelText   $csharpLabel

最終的な考え

C#で画像からQRコードを読み取るのは難しくありません。 IronQRを使用すると、わずか数行のコードで.NETアプリケーションにQRコードスキャンを統合できます。 そのシンプルさ、クロスプラットフォームの互換性、および優れたパフォーマンスにより、現代のQR対応システムで作業する開発者にとって欠かせないツールとなっています。

この機能を拡張したい場合は、次の点を検討してください:

  • QRコードの生成で自分のスキャン可能なコードを作成できます。
  • IronBarcodeまたは IronOCRと統合することで、さらに広範囲なスキャン機能を提供します。 始める準備はできましたか?

IronQRの無料トライアルをインストールして今日から始め、このライブラリがQRコードのタスクをどのように高めるかを学びましょう。

よくある質問

C#で画像からQRコードをどうやって読むのですか?

C#で画像からQRコードを読むにはIronQRを使用できます。IronQRはPNG、JPG、TIFFなどのさまざまな画像形式からQRコードデータをスキャンして抽出するメソッドを提供します。

.NETプロジェクトでIronQRを設定するために必要な手順は何ですか?

To set up IronQR in a .NET project, use the NuGet Package Manager Console with the command Install-Package IronQR, or find IronQR in the NuGet Package Manager GUI within Visual Studio and click 'Install'.

IronQRは低品質の画像のQRコード読み取りにどのように役立ちますか?

IronQRは品質が異なる画像からQRコードを読み取るように設計されています。ただし、最良の結果を得るには、画像が良好なコントラストとQRコード領域へのフォーカスを持つことを確認してください。検出に失敗した場合は、画像の品質を向上させるか、画像を切り取ってみてください。

IronQRは1つの画像から複数のQRコードを読むことができますか?

はい、IronQRは1つの画像から複数のQRコードを検出して読み取ることができます。これは複数のQRコードを持つ文書やラベルを処理する際に役立ちます。

.NETアプリケーションにおけるQRコード読み取りの一般的な用途は何ですか?

一般的な用途には、在庫管理、二要素認証、モバイルアプリ統合、イベントチケット、決済ゲートウェイなどがあります。IronQRはこれらのアプリケーションに高速で信頼性のあるQRコード読み取り能力を提供します。

IronQRはどのようにしてクロスプラットフォームの互換性を確保しますか?

IronQRは.NET Framework、.NET Core、.NET Standard、および.NET 6/7+をサポートし、Windows、Linux、その他の環境でのクロスプラットフォーム互換性を提供します。

IronQRがQRコードを読み取れない場合はどうすればいいですか?

画像の品質はクリアでコントラストがあることを確認します。QRコードに遮蔽がないことを確認し、QRコードエリアに焦点を合わせるためにトリミングを検討します。問題が解決しない場合は、ファイル形式がサポートされているか確認してください。

IronQRを使ったQRコード読み取りの際に例外をどうやって処理しますか?

To handle exceptions, wrap your IronQR code in try-catch blocks. This approach helps manage issues such as corrupted files or unsupported formats gracefully.

QRコード処理にIronQRを使うことの利点は何ですか?

IronQRは高度な速度性能、複数の画像形式のサポート、企業向けの安定性を提供します。さまざまな.NETアプリケーションに統合しやすく、開発者に効率的なQRコード処理ソリューションを求めるのに理想的です。

IronQRを使ってQRコード検出精度をどのように向上させますか?

高品質の画像と良好なコントラストと焦点を使って検出精度を向上させましょう。QRコードが遮られていないことを確認し、必要に応じて画像の前処理技術を使用することを検討してください。

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