C#で画像からqrコード 読み取りをする方法
IronQR を使用すると、開発者は IronDrawing を使用して画像を読み込み、QrImageInput オブジェクトを作成し、BarcodeReader.Read メソッドを使用して QR データを効率的にデコードすることで、C# でさまざまな画像形式から QR コードを読み取ることができます。
クイックスタート: C# で画像から QR コードを読み取る
画像からQRコードを読み取る方法
- 画像からQRコードを読み取るためのC#ライブラリをダウンロードする
- IronDrawingを使用して画像データをインポートする
- Create a `QrImageInput` object from the image data
- Pass the object to the ``Read`` method
- 検出された各QRコードを反復して情報を確認する
異なる画像フォーマットから QR コードを読み取るには?
IronQRは様々な画像フォーマットからのQRコード読み取りをサポートしています。 この機能は、高度な機械学習モデルを使用して、さまざまなメディアタイプにわたって正確なデコードを保証します。サポートされているフォーマットは次のとおりです:
- ジョイントフォトグラフィックエキスパーツグループ (JPEG)
- ポータブル・ネットワーク・グラフィックス (PNG)
- グラフィックス・インターチェンジ・フォーマット (GIF)
- タグ付画像ファイル形式 (TIFF)
- ビットマップ画像ファイル (BMP)
- WBMP
- WebP
- アイコン(ico)
- WMF
- RawFormat(生)
このフォーマットのサポートは、画像処理を効率的に処理するオープンソースライブラリIronDrawingによって実現されています。 デジタルカメラ、スキャナ、モバイル機器、WebダウンロードからのQRコードを、フォーマット変換なしで処理できます。
-
IronQR をNuGetパッケージマネージャでインストール
PM > Install-Package IronQR -
このコード スニペットをコピーして実行します。
// Import necessary IronQR and IronDrawing namespaces using IronSoftware.Drawing; using IronBarcode; public class QRCodeReader { public static void Main() { // Load an image from a file path using (var inputImage = Image.FromFile("path/to/your/image/file.webp")) { // Create a QrImageInput object from the image var qrImageInput = new QrImageInput(inputImage); // Decode the QRコード from the image var result = BarcodeReader.Read(qrImageInput); // Iterate through each detected QRコード and display its information foreach (var barcodeResult in result.Barcodes) { Console.WriteLine($"QR Code Data: {barcodeResult.Value}"); } } } } -
実際の環境でテストするためにデプロイする
今日プロジェクトで IronQR を使い始めましょう無料トライアル
注: "path/to/your/image/file.webp"を QR コード画像ファイルへの実際のパスに置き換えます。
サンプル画像の QR コードの値について知りたいですか? コード スニペットを使って試してみてください。
なぜIronQRは複数の画像フォーマットをサポートしているのですか?
QRコードの読み取りとは、QRコードに格納された情報をスキャンして解読することです。 これは通常、QRコードのデータを解釈できるソフトウェアと組み合わせたカメラまたはスキャナを使用して行われます。 QR コードに含まれる情報には、テキスト、URL、連絡先の詳細、その他の形式のデータなどがあります。
IronQRのマルチフォーマット対応は、マーケティング資料や製品パッケージからデジタル文書やウェブコンテンツまで、QRコードが様々な文脈で登場する実世界のアプリケーションに不可欠です。 IronQRは多様なフォーマットをサポートすることで、開発者が画像フォーマットの互換性を心配することなく、堅牢なアプリケーションを構築できることを保証します。 IronQRの読込み機能の詳細については、この柔軟性がどのように開発ワークフローを向上させるかをご理解ください。
それぞれの画像形式はいつ使うべきですか?
QRコード処理では、画像形式によって目的が異なります:
- PNG:透明性が必要なQRコードや、画質が最優先される場合に最適です。 PNGの可逆圧縮により、QRコードのパターンは鮮明で読みやすいままです。
- JPEG:QRコードを含む写真や、ファイルサイズが気になる場合に最適です。 圧縮アーチファクトが可読性に影響するのを防ぐため、より高い品質設定(80%以上)を使用してください。
- TIFF:アーカイブ目的や、企業環境でスキャンした文書を扱う場合に最適です。
- WebP:ウェブアプリケーションに理想的な、品質保持に優れた圧縮を提供する最新のフォーマット。
どのようなフォーマットでも最適な結果を得るには、画像の解像度(印刷用QRコードでは最低300DPI)とコントラストを十分に保つようにしてください。フォーマット固有の最適化テクニックについては、高度なQR読み取り例をご覧ください。
画質が悪い場合はどうなりますか?
IronQRは不完全な画像を扱うためにフォールトトレランス機能を組み込んでいます。 画質の悪い画像を扱う場合、ライブラリはいくつかの戦略を採用しています:
1.エラー訂正:QRコードにはエラー訂正機能(L、M、Q、Hレベル)があり、コードの30%までが破損していてもデータを復元できます。 2.機械学習による強化: IRQRのMLモデルは、ぼかし、歪み、照明不良のような一般的な問題を検出し、補正します。 3.前処理:自動画像補正により、デコードの前にコントラストとシャープネスを改善します。
難しいシナリオの場合は、カスタムQR読み取りモードオプションを使用して読み取りプロセスを微調整することを検討してください:
// Example: Reading QRコードs with enhanced error correction
using IronBarcode;
public class EnhancedQRReader
{
public static void ReadPoorQualityImage()
{
// Configure reader with multiple attempts and error correction
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Detailed, // More thorough scanning
ExpectMultipleBarcodes = true, // Check for multiple codes
ExpectBarcodeTypes = BarcodeType.QRCode // Focus on QRコードs only
};
using (var inputImage = Image.FromFile("blurry_qr_code.jpg"))
{
var qrImageInput = new QrImageInput(inputImage);
var results = BarcodeReader.Read(qrImageInput, options);
foreach (var result in results.Barcodes)
{
Console.WriteLine($"Decoded: {result.Value}");
Console.WriteLine($"Confidence: {result.Confidence}%");
}
}
}
}
// Example: Reading QRコードs with enhanced error correction
using IronBarcode;
public class EnhancedQRReader
{
public static void ReadPoorQualityImage()
{
// Configure reader with multiple attempts and error correction
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Detailed, // More thorough scanning
ExpectMultipleBarcodes = true, // Check for multiple codes
ExpectBarcodeTypes = BarcodeType.QRCode // Focus on QRコードs only
};
using (var inputImage = Image.FromFile("blurry_qr_code.jpg"))
{
var qrImageInput = new QrImageInput(inputImage);
var results = BarcodeReader.Read(qrImageInput, options);
foreach (var result in results.Barcodes)
{
Console.WriteLine($"Decoded: {result.Value}");
Console.WriteLine($"Confidence: {result.Confidence}%");
}
}
}
}
Imports IronBarcode
Public Class EnhancedQRReader
Public Shared Sub ReadPoorQualityImage()
' Configure reader with multiple attempts and error correction
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Detailed, ' More thorough scanning
.ExpectMultipleBarcodes = True, ' Check for multiple codes
.ExpectBarcodeTypes = BarcodeType.QRCode ' Focus on QRコードs only
}
Using inputImage = Image.FromFile("blurry_qr_code.jpg")
Dim qrImageInput As New QrImageInput(inputImage)
Dim results = BarcodeReader.Read(qrImageInput, options)
For Each result In results.Barcodes
Console.WriteLine($"Decoded: {result.Value}")
Console.WriteLine($"Confidence: {result.Confidence}%")
Next
End Using
End Sub
End Class
qrコード 読み取りから値を取得する
ほとんどのIronQR関数は複数の検出をサポートするためにコレクションを返します。 results はオブジェクトのシーケンスであるため、それ自体には Value プロパティはありません。 サンプル コードでは、コレクションから最初の QrResult を具体的に選択し、その値を取得します。
:path=/static-assets/qr/content-code-examples/how-to/read-qr-code-image-value.cs
using System;
using System.Collections.Generic;
using System.Linq;
using IronQr;
using System.Drawing;
// Import image
var inputImage = Image.FromFile("sample.jpg");
// Load the asset into QrImageInput
QrImageInput imageInput = new QrImageInput(inputImage);
// Create a QR Reader object
QrReader reader = new QrReader();
// Read the Input an get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
// Display the value of the first QR code found
Console.WriteLine($"QR code value is {results.First().Value}");
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports IronQr
Imports System.Drawing
' Import image
Dim inputImage As Image = Image.FromFile("sample.jpg")
' Load the asset into QrImageInput
Dim imageInput As New QrImageInput(inputImage)
' Create a QR Reader object
Dim reader As New QrReader()
' Read the Input and get all embedded QR Codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' Display the value of the first QR code found
Console.WriteLine($"QR code value is {results.First().Value}")
画像内の QR コード位置を検出する
IronQRは単純なデコードにとどまらず、画像内のQRコードの位置を正確に特定します。 このポジショニングは、PointF (0,0)が画像の左上隅を表す標準座標系を使用しています。 QR コードの角の正確な空間座標は、Points[] 配列を通じてアクセスできます。
この例では、検出されたQRコードの4点すべての座標が取得され、コンソールに出力されます。
:path=/static-assets/qr/content-code-examples/how-to/read-qr-code-image-position.cs
using System;
using System.Collections.Generic;
using IronQr;
using System.Drawing;
using System.Linq;
// Import an image containing a QR code
var inputImage = Image.FromFile("urlQr.png");
// Load the asset into a QrImageInput object
var imageInput = new QrImageInput(inputImage);
// Create a QR Reader object
var reader = new QrReader();
// Read the input and get all embedded QR codes
IEnumerable<QrResult> results = reader.Read(imageInput);
// [TL, TR, BL, BR]
string[] labels = { "Top-Left", "Top-Right", "Bottom-Left", "Bottom-Right" };
var points = results.First().Points;
for (int i = 0; i < points.Length; i++)
{
Console.WriteLine($"{labels[i]}: {points[i].X}, {points[i].Y}");
}
Imports System
Imports System.Collections.Generic
Imports IronQr
Imports System.Drawing
Imports System.Linq
' Import an image containing a QR code
Dim inputImage As Image = Image.FromFile("urlQr.png")
' Load the asset into a QrImageInput object
Dim imageInput As New QrImageInput(inputImage)
' Create a QR Reader object
Dim reader As New QrReader()
' Read the input and get all embedded QR codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
' [TL, TR, BL, BR]
Dim labels As String() = { "Top-Left", "Top-Right", "Bottom-Left", "Bottom-Right" }
Dim points = results.First().Points
For i As Integer = 0 To points.Length - 1
Console.WriteLine($"{labels(i)}: {points(i).X}, {points(i).Y}")
Next
入力QRコード
出力
システムは、すべてのQRコードのコーナーの正確な空間座標をコンソールに記録していることに注目してください。
サポートされているQRコードの種類
作成と読み取りの両方で、複数の種類の QR コードがサポートされています。 IronQRは多様なアプリケーションのニーズに応えるため、様々なQRコードフォーマットを包括的にサポートしています。 サポートされているQRフォーマットの詳細については、当社のドキュメントを参照してください。 サポートされている QR コードの種類は次のとおりです。
- QRCode:現在最も一般的に使用されている標準QRコード。 最大7,089文字の数字または4,296文字の英数字を格納できるため、ウェブサイトのURLや連絡先情報などの用途に適しています。
- MicroQRCode:限られたスペース用に設計された標準QRコードの小型版。 最大35文字の数字または21文字の英数字を格納でき、小さなパッケージや小さな印刷ラベルに最適です。
- RMQRCode:RMQRコード(RectangularマイクロQRCode)は、正方形ではなく長方形のコンパクトなバージョンです。 このバージョンは、アスペクト比を柔軟に変更できるので、長方形のスペースが利用できるアプリケーションに便利です。
正しいQRコードの種類を選ぶにはどうすればよいですか?
適切なQRコードタイプの選択は、特定の使用ケースと制約によって決まります:
-
標準QRコード:スペースに制限がなく、最大限のデータ容量が必要な汎用アプリケーションにはこれを選んでください。 URL、WiFi認証情報、vCard連絡先、または詳細な製品情報に最適です。 実装の詳細については、QRコード生成例を参照してください。
-
マイクロQRコード:電子部品、宝石タグ、医療機器などの小さな表面を扱う場合に最適です。 容量には限りがありますが、シリアル番号やシンプルなURL、基本的なトラッキングコードには最適です。
- RMQRコード:円筒形の製品に狭いラベルを貼ったり、パッケージの端に細長いスペースを設けたりするなど、使用可能なスペースに特定の寸法制約がある場合は、長方形のコードを選択します。
データ ストレージの制限は何ですか?
データ容量を理解することで、QRコードの実装を最適化できます:
| QRコードタイプ | 数値のみ | 英数字 | バイナリ | 漢字 |
|---|---|---|---|---|
| 標準QR | 7,089 | 4,296 | 2,953 | 1,817 |
| マイクロQR | 35 | 21 | 15 | 9 |
| RMQR | 変数 | 変数 | 変数 | 変数 |
データストレージを計画する際には、これらの要素を考慮してください:
- 利用可能なスペースを最大化するために、WebリンクにURL短縮機能を使用してください。
- 大規模データセットのデータ圧縮の実装
- 適切なエラー訂正レベルを選択する(訂正レベルが高いほど、容量が減少します)
高度な実装については、スタイル付きQRコード生成ガイドを参照して、美しさとデータ容量のバランスを取ってください。
マイクロコードとRMQRコードのどちらを使うべきですか?
マイクロコードとRMQRコードは、特定のシナリオに優れています:
マイクロQRコードは次のような用途に最適です:。
- 部品追跡が必要な電子回路基板
- 患者や薬の識別子が必要な小型医療機器
- 刻印スペースが限られているジュエリー認証
- 製造業における小型製品ラベル
RMQRコードは以下のような場合に最適です。
- チューブやパイプに貼られる幅の狭い出荷ラベル
- ペン軸やツールの細長いスペース
- バナー形式のマーケティング資料
- 既存の長方形のデザイン要素への統合
異なるQRコードタイプを読み取るための実用的な例です:
using IronBarcode;
using IronSoftware.Drawing;
public class MultiTypeQRReader
{
public static void ReadVariousQRTypes()
{
// Configure reader to handle all QRコード types
var options = new BarcodeReaderOptions
{
ExpectBarcodeTypes = BarcodeType.QRCode |
BarcodeType.MicroQRCode |
BarcodeType.RectangularMicroQRCode
};
string[] imagePaths = {
"standard_qr.png",
"micro_qr.png",
"rectangular_qr.png"
};
foreach (var path in imagePaths)
{
using (var image = Image.FromFile(path))
{
var qrInput = new QrImageInput(image);
var results = BarcodeReader.Read(qrInput, options);
foreach (var qr in results.Barcodes)
{
Console.WriteLine($"Type: {qr.BarcodeType}");
Console.WriteLine($"Data: {qr.Value}");
Console.WriteLine($"Format: {qr.Format}");
Console.WriteLine("---");
}
}
}
}
}
using IronBarcode;
using IronSoftware.Drawing;
public class MultiTypeQRReader
{
public static void ReadVariousQRTypes()
{
// Configure reader to handle all QRコード types
var options = new BarcodeReaderOptions
{
ExpectBarcodeTypes = BarcodeType.QRCode |
BarcodeType.MicroQRCode |
BarcodeType.RectangularMicroQRCode
};
string[] imagePaths = {
"standard_qr.png",
"micro_qr.png",
"rectangular_qr.png"
};
foreach (var path in imagePaths)
{
using (var image = Image.FromFile(path))
{
var qrInput = new QrImageInput(image);
var results = BarcodeReader.Read(qrInput, options);
foreach (var qr in results.Barcodes)
{
Console.WriteLine($"Type: {qr.BarcodeType}");
Console.WriteLine($"Data: {qr.Value}");
Console.WriteLine($"Format: {qr.Format}");
Console.WriteLine("---");
}
}
}
}
}
Imports IronBarcode
Imports IronSoftware.Drawing
Public Class MultiTypeQRReader
Public Shared Sub ReadVariousQRTypes()
' Configure reader to handle all QRコード types
Dim options As New BarcodeReaderOptions With {
.ExpectBarcodeTypes = BarcodeType.QRCode Or
BarcodeType.MicroQRCode Or
BarcodeType.RectangularMicroQRCode
}
Dim imagePaths As String() = {
"standard_qr.png",
"micro_qr.png",
"rectangular_qr.png"
}
For Each path In imagePaths
Using image = Image.FromFile(path)
Dim qrInput As New QrImageInput(image)
Dim results = BarcodeReader.Read(qrInput, options)
For Each qr In results.Barcodes
Console.WriteLine($"Type: {qr.BarcodeType}")
Console.WriteLine($"Data: {qr.Value}")
Console.WriteLine($"Format: {qr.Format}")
Console.WriteLine("---")
Next
End Using
Next
End Sub
End Class
本番環境へのデプロイについては、NuGetパッケージガイドを確認して、お使いのプラットフォームに適したパッケージがあることを確認し、APIリファレンスを確認して、利用可能なすべてのメソッドとプロパティに関する包括的なドキュメントを確認してください。
よくある質問
IronQRはQRコード読み取り用にどのような画像フォーマットをサポートしていますか?
IronQRはJPEG、PNG、GIF、TIFF、BMP、WBMP、WebP、ICO、WMF、RawFormatを含む複数の画像フォーマットからのQRコードの読み取りをサポートしています。この包括的なフォーマットのサポートはIronDrawingによって実現されており、フォーマットの変換なしに様々なソースからのQRコードを処理することができます。
C#で画像ファイルからQRコードを読み取るにはどうすればよいですか?
IronQRを使ってQRコードを読み取るには、まずImage.FromFile()を使って画像を読み込み、読み込んだ画像からQrImageInputオブジェクトを作成し、BarcodeReader.Read()を使ってQRデータをデコードします。このメソッドは結果を返すので、検出されたQRコードの情報にアクセスするためにそれを繰り返し実行することができます。
さまざまなメディアタイプで正確なQRコード読み取りを可能にする技術とは?
IronQRは高度な機械学習モデルを使用し、様々なメディアタイプや画像フォーマットにおいて正確なQRコードのデコードを保証します。このAIを駆使したアプローチにより、困難な画像条件でも高い精度を維持することができます。
1つの画像から複数のQRコードを読み取ることはできますか?
はい、IronQRは一つの画像から複数のQRコードを検出し読み取ることができます。BarcodeReader.Readメソッドは結果のコレクションを返すので、foreachループを使って検出されたQRコードを繰り返し処理し、個々のQRコードデータにアクセスすることができます。
IronQRが読み取るQRコードにはどのようなデータが格納されていますか?
IronQRはプレーンテキスト、URL、連絡先、その他の構造化データなど、QRコードに格納された様々なタイプのデータをデコードすることができます。デコードされた情報は各BarcodeResultオブジェクトのValueプロパティからアクセスできます。

