跳至页脚内容
使用 IRONQR

如何在 C# 中从图像读取 QR

QR码(快速响应码)无处不在——产品包装、活动门票、菜单,甚至名片上。 作为.NET开发人员,能够快速可靠地从图像中读取QR码可以开启强大的自动化和用户交互功能之门。 在本指南中,我们将指导您如何使用IronQR,一个专为.NET构建的高性能QR码库,用几行C#代码从图像中读取QR码。

无论您是在构建库存管理软件、集成双因素认证,还是只是从截图中解码URL,IronQR都让这一切变得简单。

什么是IronQR?

IronQR是一个强大的C# QR码库,专为.NET开发人员创建了一个强大的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。

支持的图像格式

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或应用特定的深度链接。
  • 活动票务:验证通过电子邮件发送或在屏幕上显示的票务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,您可以用几行代码将QR码扫描集成到您的.NET应用中。 其简单性、跨平台兼容性和出色的性能使其成为开发现代QR启用系统的首选工具。

如果您希望扩展此功能,请考虑探索:

  • QR码生成 用于创建您自己的可扫描代码。
  • 集成 IronBarcode IronOCR 以获得更广泛的扫描功能。 准备好开始了吗?

安装IronQR免费试用版 立即开始使用,了解这个库如何提升您的QR码任务。

常见问题解答

如何在 C# 中从图像读取 QR 码?

您可以使用 IronQR 从图像中读取 QR 码。IronQR 提供了扫描和提取 QR 码数据的方法,支持 PNG、JPG 和 TIFF 等多种图像格式,以最少的代码做到这一点。

在 .NET 项目中设置 IronQR 需要哪些步骤?

要在 .NET 项目中设置 IronQR,请使用 NuGet 包管理器控制台并运行 Install-Package IronQR 命令,或者在 Visual Studio 的 NuGet 包管理器 GUI 中找到 IronQR 并点击 '安装'。

IronQR 如何帮助处理低质量图像中的 QR 码读取?

IronQR 经过设计可处理质量不同的图像中 QR 码的读取。但是,为了获得最佳效果,请确保图像具有良好的对比度并聚焦在 QR 码区域。如果检测失败,请尝试提高图像质量或裁剪图像。

IronQR 可以从单个图像中读取多个 QR 码吗?

是的,IronQR能检测并读取单图像中的多个QR码,适用于处理多QR码文档或标签。

在 .NET 应用程序中读取 QR 码的常见用例是什么?

常见用例包括库存管理、双因素身份验证、移动应用集成、活动验票和支付网关。IronQR 提供快速且可靠的 QR 码读取功能,以促进这些应用程序。

IronQR 如何确保跨平台兼容性?

IronQR 支持 .NET Framework、.NET Core、.NET Standard 以及 .NET 6/7+,为 Windows、Linux 和其他环境提供跨平台兼容性。

如果 IronQR 未能读取 QR 码,我该怎么办?

如果 IronQR 未能读取 QR 码,请检查图像质量是否清晰且对比度高。确保 QR 码没有被遮挡,考虑裁剪到 QR 码区域。如果问题仍然存在,验证文件格式是否支持。

在使用 IronQR 读取 QR 码时,我如何处理异常?

要处理异常,请将您的 IronQR 代码包裹在 try-catch 块中。这种方法有助于优雅地管理诸如文件损坏或不支持的格式等问题。

使用 IronQR 进行 QR 码处理有哪些优点?

IronQR 提供高速性能,支持多种图像格式,并提供企业级稳定性。它易于集成到各种 .NET 应用程序中,是开发人员寻求高效 QR 码处理解决方案的理想选择。

如何通过 IronQR 提高 QR 码检测准确性?

通过使用高质量、具有良好对比度和聚焦的图像来提高检测准确性。确保 QR 码未被遮挡,必要时考虑使用图像预处理技术。

Jordi Bardia
软件工程师
Jordi 最擅长 Python、C# 和 C++,当他不在 Iron Software 利用这些技能时,他就在游戏编程。分享产品测试、产品开发和研究的责任,Jordi 在持续的产品改进中增加了巨大的价值。多样的经验使他面临挑战并保持投入,他表示这是在 Iron Software 工作的最喜欢的方面之一。Jordi 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。