跳至页脚内容
USING IRONBARCODE

如何用 IronBarcode 在 C# 中生成 QR 码

IronBarcode 使 .NET 开发人员能够使用其 QRCodeWriter 类高效地创建 QR 码。 它支持自定义徽标、颜色、多种输出格式以及跨平台部署,包括 Windows、Linux、macOS 和移动设备。

本指南演示如何使用IronBarcode为生产系统生成二维码。 IronBarcode 的 API 遵循 .NET 规范,同时提供企业应用程序所需的性能和可靠性。 该库提供完整的文档,并支持在 Windows、Linux、macOS 和移动平台上部署。 如需全面了解所有功能,请浏览功能页面条形码快速入门指南提供可立即上手操作的示例,帮助您快速入门。

使用 IronBarcode 生成二维码有哪些好处?

为什么选择 IronBarcode 而不是其他库?

如何使用IronBarcode生成二维码?

以下各节将演示遵循 SOLID 原则的生产就绪代码。 您将学习创建各种类型的二维码,实现自定义样式,并确保可靠的扫描性能。 该库的功能包括支持除二维码之外的一维二维条形码。 对于更高级的场景,请查阅API 参考文档以获取完整的方法签名。 浏览演示视频,了解 IronBarcode 的实际功能。

如何创建一个新项目?

打开 Visual Studio,从"文件"菜单中选择"新建项目" 。 对于企业部署,请考虑查看MSI 安装程序指南以进行自动安装。 入门概览提供了完整的设置说明。

选择控制台应用程序模板,然后单击"下一步"。

输入您喜欢的项目名称(例如二维码生成器),并指定项目位置。 点击"下一步"

从下拉列表中选择 .NET Framework( .NET 6.0(长期支持) ),然后单击"创建"。 IronBarcode 支持所有现代 .NET 版本,详情请参阅兼容性文档。 有关具体的平台要求,请查看Blazor集成指南。

有哪些安装方法?

使用四种适用于不同工作流程的方法之一来安装 IronBarcode。 图书馆的现场演示展示了实时条形码识别功能。 如需快速测试,请查看条形码快速入门示例

如何使用 Visual Studio 的包管理器 UI 进行安装?

转到"工具" > "NuGet 包管理器" > "管理解决方案的 NuGet 包"……

或者在解决方案资源管理器中右键单击您的项目,然后选择"管理 NuGet 程序包..."

点击"浏览" ,搜索"条形码" ,选择"IronBarcode" ,选择您的项目,然后点击"安装"。 有关特定平台的安装,请参阅NuGet 包指南。 如果遇到问题,请参阅NuGet 故障排除指南。 该库支持多种部署方案,包括AWS LambdaAzure Functions

如何使用软件包管理器控制台进行安装?

打开"工具" > "NuGet 程序包管理器" > "程序包管理器控制台" ,然后运行:

Install-Package BarCode

这会将库安装到您当前的项目中。 对于容器化部署,请遵循Docker 设置指南。 使用许可证密钥时,请确保针对部署环境进行正确配置。

如何从 NuGet 或 IronBarcode 网站下载?

从 NuGet Gallery 网站下载或访问 IronBarcode 的主页获取最新的 .NET 条形码 DLL。 在解决方案资源管理器中,通过"添加" > "引用"将 DLL 添加到您的项目中。 要排查 DLL 问题,请参阅缺失 DLL 指南。 遇到运行时问题时,请参阅运行时复制异常指南

如何创建和自定义二维码图像?

如何生成基本的二维码?

使用QRCodeWriter类的CreateQrCode方法创建二维码。 有关完整示例,请参阅C# 二维码生成器教程。 该库支持创建各种格式的条形码图像

using IronBarCode;

// Basic QR code generation with medium error correction
var qrCode = QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium, 0);
qrCode.SaveAsPng("MyQR.png");

// Generate QR code with automatic sizing and highest error correction
var autoQr = QRCodeWriter.CreateQrCode("Automatic sizing example");
autoQr.SaveAsJpeg("AutoQR.jpg");

// Production-ready QR code with validation
public GeneratedBarcode CreateValidatedQrCode(string data, int size = 600)
{
    if (string.IsNullOrWhiteSpace(data))
        throw new ArgumentException("Data cannot be empty");

    if (data.Length > 2953) // QR Code capacity at highest error correction
        throw new ArgumentException("Data exceeds QR code capacity");

    var qr = QRCodeWriter.CreateQrCode(data, size, QRCodeWriter.QrErrorCorrectionLevel.High);
    qr.VerifyQrCode(); // Verify the generated code is valid
    return qr;
}
using IronBarCode;

// Basic QR code generation with medium error correction
var qrCode = QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium, 0);
qrCode.SaveAsPng("MyQR.png");

// Generate QR code with automatic sizing and highest error correction
var autoQr = QRCodeWriter.CreateQrCode("Automatic sizing example");
autoQr.SaveAsJpeg("AutoQR.jpg");

// Production-ready QR code with validation
public GeneratedBarcode CreateValidatedQrCode(string data, int size = 600)
{
    if (string.IsNullOrWhiteSpace(data))
        throw new ArgumentException("Data cannot be empty");

    if (data.Length > 2953) // QR Code capacity at highest error correction
        throw new ArgumentException("Data exceeds QR code capacity");

    var qr = QRCodeWriter.CreateQrCode(data, size, QRCodeWriter.QrErrorCorrectionLevel.High);
    qr.VerifyQrCode(); // Verify the generated code is valid
    return qr;
}
Imports IronBarCode

' Basic QR code generation with medium error correction
Dim qrCode = QRCodeWriter.CreateQrCode("hello world", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium, 0)
qrCode.SaveAsPng("MyQR.png")

' Generate QR code with automatic sizing and highest error correction
Dim autoQr = QRCodeWriter.CreateQrCode("Automatic sizing example")
autoQr.SaveAsJpeg("AutoQR.jpg")

' Production-ready QR code with validation
Public Function CreateValidatedQrCode(data As String, Optional size As Integer = 600) As GeneratedBarcode
    If String.IsNullOrWhiteSpace(data) Then
        Throw New ArgumentException("Data cannot be empty")
    End If

    If data.Length > 2953 Then ' QR Code capacity at highest error correction
        Throw New ArgumentException("Data exceeds QR code capacity")
    End If

    Dim qr = QRCodeWriter.CreateQrCode(data, size, QRCodeWriter.QrErrorCorrectionLevel.High)
    qr.VerifyQrCode() ' Verify the generated code is valid
    Return qr
End Function
$vbLabelText   $csharpLabel

CreateQrCode方法接受以下参数:

  • 必填:要编码的数据(字符串或流)
  • 可选:图形尺寸(默认 500x500 像素)
  • 可选:纠错级别(低 7%,中 15%,高 25%,最高 30%)
  • 可选:二维码版本号(0 表示自动)

对于高性能批量处理,请使用异步操作自定义样式。 在不完美条件下工作时,请使用容错功能条形码读取教程演示了如何验证生成的条形码。

我可以在二维码中编码哪些数据类型?

生产应用中常见的二维码数据类型包括从各种来源创建条形码。 有关详细示例,请参阅创建二维码示例。 IronBarcode支持Unicode条形码,用于国际字符编码:

URL二维码:

// Generate QR code for website URL
var urlQr = QRCodeWriter.CreateQrCode("___PROTECTED_URL_76___", 800);
urlQr.SetMargins(10); // Add quiet zone
urlQr.SaveAsPng("campaign-qr.png");

// Advanced URL QR code with tracking
public GeneratedBarcode CreateTrackableUrlQr(string baseUrl, Dictionary<string, string> utmParams)
{
    var uriBuilder = new UriBuilder(baseUrl);
    var query = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query);

    foreach (var param in utmParams)
        query[param.Key] = param.Value;

    uriBuilder.Query = query.ToString();
    var qr = QRCodeWriter.CreateQrCode(uriBuilder.ToString(), 1000);
    return qr;
}
// Generate QR code for website URL
var urlQr = QRCodeWriter.CreateQrCode("___PROTECTED_URL_76___", 800);
urlQr.SetMargins(10); // Add quiet zone
urlQr.SaveAsPng("campaign-qr.png");

// Advanced URL QR code with tracking
public GeneratedBarcode CreateTrackableUrlQr(string baseUrl, Dictionary<string, string> utmParams)
{
    var uriBuilder = new UriBuilder(baseUrl);
    var query = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query);

    foreach (var param in utmParams)
        query[param.Key] = param.Value;

    uriBuilder.Query = query.ToString();
    var qr = QRCodeWriter.CreateQrCode(uriBuilder.ToString(), 1000);
    return qr;
}
Imports System
Imports System.Collections.Generic
Imports System.Web

' Generate QR code for website URL
Dim urlQr = QRCodeWriter.CreateQrCode("___PROTECTED_URL_76___", 800)
urlQr.SetMargins(10) ' Add quiet zone
urlQr.SaveAsPng("campaign-qr.png")

' Advanced URL QR code with tracking
Public Function CreateTrackableUrlQr(baseUrl As String, utmParams As Dictionary(Of String, String)) As GeneratedBarcode
    Dim uriBuilder = New UriBuilder(baseUrl)
    Dim query = HttpUtility.ParseQueryString(uriBuilder.Query)

    For Each param In utmParams
        query(param.Key) = param.Value
    Next

    uriBuilder.Query = query.ToString()
    Dim qr = QRCodeWriter.CreateQrCode(uriBuilder.ToString(), 1000)
    Return qr
End Function
$vbLabelText   $csharpLabel

vCard 联系信息:

string vCard = @"BEGIN:VCARD
VERSION:3.0
FN:John Smith
ORG:Tech Corp
TEL:+1-555-0123
EMAIL:john@example.com
END:VCARD";

var contactQr = QRCodeWriter.CreateQrCode(vCard, 600, QRCodeWriter.QrErrorCorrectionLevel.Medium);
contactQr.SaveAsPng("contact-card.png");
string vCard = @"BEGIN:VCARD
VERSION:3.0
FN:John Smith
ORG:Tech Corp
TEL:+1-555-0123
EMAIL:john@example.com
END:VCARD";

var contactQr = QRCodeWriter.CreateQrCode(vCard, 600, QRCodeWriter.QrErrorCorrectionLevel.Medium);
contactQr.SaveAsPng("contact-card.png");
Dim vCard As String = "BEGIN:VCARD" & vbCrLf & _
                      "VERSION:3.0" & vbCrLf & _
                      "FN:John Smith" & vbCrLf & _
                      "ORG:Tech Corp" & vbCrLf & _
                      "TEL:+1-555-0123" & vbCrLf & _
                      "EMAIL:john@example.com" & vbCrLf & _
                      "END:VCARD"

Dim contactQr = QRCodeWriter.CreateQrCode(vCard, 600, QRCodeWriter.QrErrorCorrectionLevel.Medium)
contactQr.SaveAsPng("contact-card.png")
$vbLabelText   $csharpLabel

WiFi配置:

string wifiConfig = "WIFI:T:WPA;S:NetworkName;P:Password123;;";
var wifiQr = QRCodeWriter.CreateQrCode(wifiConfig, 500);
wifiQr.SaveAsPng("wifi-config.png");
string wifiConfig = "WIFI:T:WPA;S:NetworkName;P:Password123;;";
var wifiQr = QRCodeWriter.CreateQrCode(wifiConfig, 500);
wifiQr.SaveAsPng("wifi-config.png");
Dim wifiConfig As String = "WIFI:T:WPA;S:NetworkName;P:Password123;;"
Dim wifiQr = QRCodeWriter.CreateQrCode(wifiConfig, 500)
wifiQr.SaveAsPng("wifi-config.png")
$vbLabelText   $csharpLabel

IronBarcode 处理国际字符的Unicode 支持,并支持Micro QR 和 rMQR等格式,适用于空间受限的应用。 对于特殊格式,请探索新的格式里程碑。 在使用特殊数据格式时,该库可以从流中读取数据并将其导出为流,从而实现高效的内存使用。

如何添加徽标和自定义样式?

使用CreateQrCodeWithLogo将公司徽标添加到二维码中。 有关完整的样式选项,请参阅自定义二维码示例二维码样式指南。 该库还支持所有条形码类型的通用条形码样式

// Create QR code with embedded logo
var qrWithLogo = QRCodeWriter.CreateQrCodeWithLogo("Hello World", "logo.png", 500);
qrWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkRed);
qrWithLogo.SaveAsPng("Logo_QR_Code.png");

// Advanced logo customization
var logo = new QRCodeLogo("company-logo.png")
{
    Width = 100,
    Height = 100,
    CornerRadius = 5
};
var advancedQr = QRCodeWriter.CreateQrCodeWithLogo("Advanced Example", logo, 600);

// Production-ready branded QR code
public GeneratedBarcode CreateBrandedQrCode(string data, string logoPath, string brandColor)
{
    var logo = new QRCodeLogo(logoPath)
    {
        Width = 80,
        Height = 80,
        CornerRadius = 10
    };

    var qr = QRCodeWriter.CreateQrCodeWithLogo(data, logo, 800);
    qr.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml(brandColor));
    qr.SetMargins(15);
    return qr;
}
// Create QR code with embedded logo
var qrWithLogo = QRCodeWriter.CreateQrCodeWithLogo("Hello World", "logo.png", 500);
qrWithLogo.ChangeBarCodeColor(System.Drawing.Color.DarkRed);
qrWithLogo.SaveAsPng("Logo_QR_Code.png");

// Advanced logo customization
var logo = new QRCodeLogo("company-logo.png")
{
    Width = 100,
    Height = 100,
    CornerRadius = 5
};
var advancedQr = QRCodeWriter.CreateQrCodeWithLogo("Advanced Example", logo, 600);

// Production-ready branded QR code
public GeneratedBarcode CreateBrandedQrCode(string data, string logoPath, string brandColor)
{
    var logo = new QRCodeLogo(logoPath)
    {
        Width = 80,
        Height = 80,
        CornerRadius = 10
    };

    var qr = QRCodeWriter.CreateQrCodeWithLogo(data, logo, 800);
    qr.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml(brandColor));
    qr.SetMargins(15);
    return qr;
}
Imports System.Drawing

' Create QR code with embedded logo
Dim qrWithLogo = QRCodeWriter.CreateQrCodeWithLogo("Hello World", "logo.png", 500)
qrWithLogo.ChangeBarCodeColor(Color.DarkRed)
qrWithLogo.SaveAsPng("Logo_QR_Code.png")

' Advanced logo customization
Dim logo As New QRCodeLogo("company-logo.png") With {
    .Width = 100,
    .Height = 100,
    .CornerRadius = 5
}
Dim advancedQr = QRCodeWriter.CreateQrCodeWithLogo("Advanced Example", logo, 600)

' Production-ready branded QR code
Public Function CreateBrandedQrCode(data As String, logoPath As String, brandColor As String) As GeneratedBarcode
    Dim logo As New QRCodeLogo(logoPath) With {
        .Width = 80,
        .Height = 80,
        .CornerRadius = 10
    }

    Dim qr = QRCodeWriter.CreateQrCodeWithLogo(data, logo, 800)
    qr.ChangeBarCodeColor(ColorTranslator.FromHtml(brandColor))
    qr.SetMargins(15)
    Return qr
End Function
$vbLabelText   $csharpLabel

使用条形码自定义功能应用其他样式。 条形码样式功能提供完整的自定义选项:

// Use HTML color codes for brand colors
qrWithLogo.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml("#8B0000"));
qrWithLogo.ChangeBackgroundColor(System.Drawing.Color.LightGray);
qrWithLogo.AddAnnotationTextAboveBarcode("SCAN ME");
qrWithLogo.AddAnnotationTextBelowBarcode("Company Name");
// Use HTML color codes for brand colors
qrWithLogo.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml("#8B0000"));
qrWithLogo.ChangeBackgroundColor(System.Drawing.Color.LightGray);
qrWithLogo.AddAnnotationTextAboveBarcode("SCAN ME");
qrWithLogo.AddAnnotationTextBelowBarcode("Company Name");
' Use HTML color codes for brand colors
qrWithLogo.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml("#8B0000"))
qrWithLogo.ChangeBackgroundColor(System.Drawing.Color.LightGray)
qrWithLogo.AddAnnotationTextAboveBarcode("SCAN ME")
qrWithLogo.AddAnnotationTextBelowBarcode("Company Name")
$vbLabelText   $csharpLabel

有哪些导出格式可供选择?

保存各种格式的二维码,以适应不同的使用场景。 了解更多信息,请参阅保存条形码示例条形码图像生成器教程。 对于特殊要求,请参阅创建 1-BPP 条形码图像的指南:

// Image formats
qrWithLogo.SaveAsJpeg("qr.jpg");
qrWithLogo.SaveAsPng("qr.png");
qrWithLogo.SaveAsGif("qr.gif");
qrWithLogo.SaveAsTiff("qr.tiff");

// Web formats
qrWithLogo.SaveAsHtmlFile("qr.html");
string dataUrl = qrWithLogo.ToDataUrl();

// Print formats
qrWithLogo.SaveAsPdf("qr.pdf");
qrWithLogo.ChangeBarcodeDpi(300);

// API formats
byte[] qrBytes = qrWithLogo.ToPngBinaryData();
var stream = qrWithLogo.ToStream();

// High-quality print export
public void ExportForPrint(GeneratedBarcode qr, string filename)
{
    qr.ChangeBarcodeDpi(600); // 高的 DPI for print
    qr.ResizeTo(2000, 2000); // Large size
    qr.SaveAsTiff(filename); // Lossless format
}
// Image formats
qrWithLogo.SaveAsJpeg("qr.jpg");
qrWithLogo.SaveAsPng("qr.png");
qrWithLogo.SaveAsGif("qr.gif");
qrWithLogo.SaveAsTiff("qr.tiff");

// Web formats
qrWithLogo.SaveAsHtmlFile("qr.html");
string dataUrl = qrWithLogo.ToDataUrl();

// Print formats
qrWithLogo.SaveAsPdf("qr.pdf");
qrWithLogo.ChangeBarcodeDpi(300);

// API formats
byte[] qrBytes = qrWithLogo.ToPngBinaryData();
var stream = qrWithLogo.ToStream();

// High-quality print export
public void ExportForPrint(GeneratedBarcode qr, string filename)
{
    qr.ChangeBarcodeDpi(600); // 高的 DPI for print
    qr.ResizeTo(2000, 2000); // Large size
    qr.SaveAsTiff(filename); // Lossless format
}
' Image formats
qrWithLogo.SaveAsJpeg("qr.jpg")
qrWithLogo.SaveAsPng("qr.png")
qrWithLogo.SaveAsGif("qr.gif")
qrWithLogo.SaveAsTiff("qr.tiff")

' Web formats
qrWithLogo.SaveAsHtmlFile("qr.html")
Dim dataUrl As String = qrWithLogo.ToDataUrl()

' Print formats
qrWithLogo.SaveAsPdf("qr.pdf")
qrWithLogo.ChangeBarcodeDpi(300)

' API formats
Dim qrBytes As Byte() = qrWithLogo.ToPngBinaryData()
Dim stream = qrWithLogo.ToStream()

' High-quality print export
Public Sub ExportForPrint(qr As GeneratedBarcode, filename As String)
    qr.ChangeBarcodeDpi(600) ' 高的 DPI for print
    qr.ResizeTo(2000, 2000) ' Large size
    qr.SaveAsTiff(filename) ' Lossless format
End Sub
$vbLabelText   $csharpLabel

有关 PDF 的特定操作,请参阅有关在 PDF 中创建条形码在现有 PDF 上添加条形码的指南。 从 PDF 读取条形码时,请使用PDF 条形码阅读器设置以获得最佳效果。

如何在Web应用程序中实现二维码?

对于 ASP.NET MVC 应用程序,实现无文件 I/O 的流式传输。 该库支持创建 HTML 条形码,以便直接集成到 Web 中:

public IActionResult GetQrCode(string data)
{
    var qr = QRCodeWriter.CreateQrCode(data, 400);
    byte[] qrBytes = qr.ToPngBinaryData();
    return File(qrBytes, "image/png", "qrcode.png");
}

// Stream directly without disk I/O
public IActionResult StreamQrCode(string content)
{
    var qr = QRCodeWriter.CreateQrCode(content, 500);
    var stream = qr.ToStream();
    return File(stream, "image/png");
}

// Generate HTML-embedded QR codes
public IActionResult GetHtmlQrCode(string data)
{
    var qr = QRCodeWriter.CreateQrCode(data, 400);
    var htmlString = qr.ToHtmlTag();
    return Content(htmlString, "text/html");
}
public IActionResult GetQrCode(string data)
{
    var qr = QRCodeWriter.CreateQrCode(data, 400);
    byte[] qrBytes = qr.ToPngBinaryData();
    return File(qrBytes, "image/png", "qrcode.png");
}

// Stream directly without disk I/O
public IActionResult StreamQrCode(string content)
{
    var qr = QRCodeWriter.CreateQrCode(content, 500);
    var stream = qr.ToStream();
    return File(stream, "image/png");
}

// Generate HTML-embedded QR codes
public IActionResult GetHtmlQrCode(string data)
{
    var qr = QRCodeWriter.CreateQrCode(data, 400);
    var htmlString = qr.ToHtmlTag();
    return Content(htmlString, "text/html");
}
Public Function GetQrCode(data As String) As IActionResult
    Dim qr = QRCodeWriter.CreateQrCode(data, 400)
    Dim qrBytes As Byte() = qr.ToPngBinaryData()
    Return File(qrBytes, "image/png", "qrcode.png")
End Function

' Stream directly without disk I/O
Public Function StreamQrCode(content As String) As IActionResult
    Dim qr = QRCodeWriter.CreateQrCode(content, 500)
    Dim stream = qr.ToStream()
    Return File(stream, "image/png")
End Function

' Generate HTML-embedded QR codes
Public Function GetHtmlQrCode(data As String) As IActionResult
    Dim qr = QRCodeWriter.CreateQrCode(data, 400)
    Dim htmlString As String = qr.ToHtmlTag()
    Return Content(htmlString, "text/html")
End Function
$vbLabelText   $csharpLabel

对于Blazor 应用,实现响应式二维码生成:

@page "/qrcode"
@using IronBarCode

<input @bind="qrText" placeholder="Enter text" />
<button @onclick="GenerateQr">Generate</button>

@if (!string.IsNullOrEmpty(QrCodeDataUrl))
{
    <img src="@QrCodeDataUrl" alt="QR Code" />
}

@code {
    private string qrText = "";
    private string QrCodeDataUrl = "";

    private void GenerateQr()
    {
        if (!string.IsNullOrEmpty(qrText))
        {
            var qr = QRCodeWriter.CreateQrCode(qrText, 400);
            QrCodeDataUrl = qr.ToDataUrl();
        }
    }
}
@page "/qrcode"
@using IronBarCode

<input @bind="qrText" placeholder="Enter text" />
<button @onclick="GenerateQr">Generate</button>

@if (!string.IsNullOrEmpty(QrCodeDataUrl))
{
    <img src="@QrCodeDataUrl" alt="QR Code" />
}

@code {
    private string qrText = "";
    private string QrCodeDataUrl = "";

    private void GenerateQr()
    {
        if (!string.IsNullOrEmpty(qrText))
        {
            var qr = QRCodeWriter.CreateQrCode(qrText, 400);
            QrCodeDataUrl = qr.ToDataUrl();
        }
    }
}
@page "/qrcode"
@Imports IronBarCode

<input @bind="qrText" placeholder="Enter text" />
<button @onclick="GenerateQr">Generate</button>

@if Not String.IsNullOrEmpty(QrCodeDataUrl) Then
    <img src="@QrCodeDataUrl" alt="QR Code" />
End If

@Code
    Private qrText As String = ""
    Private QrCodeDataUrl As String = ""

    Private Sub GenerateQr()
        If Not String.IsNullOrEmpty(qrText) Then
            Dim qr = QRCodeWriter.CreateQrCode(qrText, 400)
            QrCodeDataUrl = qr.ToDataUrl()
        End If
    End Sub
End Code
$vbLabelText   $csharpLabel

要将条形码导出为 HTML,请参阅创建条形码为 HTML 指南。 在 Web 应用程序中应用许可证时,请参阅web.config 许可证密钥指南

二维码实施的最佳实践是什么?

我应该选择哪个纠错级别?

纠错能力会影响韧性和容量。 有关详细信息,请参阅纠错指南。 该库包含机器学习置信度阈值,以提高准确率:

级别 恢复 使用案例
7% 清洁的数字环境
语言 15% 印刷材料、名片
高的 25% 户外标牌、手拿物品
最高 30% 工业用途,添加标识

我的二维码应该有多大?

根据扫描距离计算最佳尺寸。 了解如何设置边距以提高扫描效果。 以下边距设置示例展示了最佳实践:

// 1:10 ratio - 1cm QR per 10cm distance
int CalculateQrSize(double scanDistanceMeters)
{
    int sizeInCm = (int)(scanDistanceMeters * 10);
    return (int)(sizeInCm * 37.8); // Convert to pixels at 96 DPI
}

// Set appropriate margins for reliable scanning
public GeneratedBarcode CreateScanOptimizedQr(string data, int scanDistance)
{
    int size = CalculateQrSize(scanDistance);
    var qr = QRCodeWriter.CreateQrCode(data, size);
    qr.SetMargins(size / 20); // 5% margin
    return qr;
}
// 1:10 ratio - 1cm QR per 10cm distance
int CalculateQrSize(double scanDistanceMeters)
{
    int sizeInCm = (int)(scanDistanceMeters * 10);
    return (int)(sizeInCm * 37.8); // Convert to pixels at 96 DPI
}

// Set appropriate margins for reliable scanning
public GeneratedBarcode CreateScanOptimizedQr(string data, int scanDistance)
{
    int size = CalculateQrSize(scanDistance);
    var qr = QRCodeWriter.CreateQrCode(data, size);
    qr.SetMargins(size / 20); // 5% margin
    return qr;
}
' 1:10 ratio - 1cm QR per 10cm distance
Private Function CalculateQrSize(scanDistanceMeters As Double) As Integer
    Dim sizeInCm As Integer = CInt(scanDistanceMeters * 10)
    Return CInt(sizeInCm * 37.8) ' Convert to pixels at 96 DPI
End Function

' Set appropriate margins for reliable scanning
Public Function CreateScanOptimizedQr(data As String, scanDistance As Integer) As GeneratedBarcode
    Dim size As Integer = CalculateQrSize(scanDistance)
    Dim qr = QRCodeWriter.CreateQrCode(data, size)
    qr.SetMargins(size / 20) ' 5% margin
    Return qr
End Function
$vbLabelText   $csharpLabel

如何确保移动设备兼容性?

通过条形码阅读器设置改进移动扫描。 如果遇到识别问题,请参阅条形码无法识别故障排除指南

public GeneratedBarcode CreateMobileOptimizedQr(string data)
{
    var qr = QRCodeWriter.CreateQrCode(data, 800, QRCodeWriter.QrErrorCorrectionLevel.Medium);
    qr.SetMargins(20); // Adequate quiet zone
    qr.ChangeBarCodeColor(System.Drawing.Color.Black);
    qr.ChangeBackgroundColor(System.Drawing.Color.White);
    return qr;
}
public GeneratedBarcode CreateMobileOptimizedQr(string data)
{
    var qr = QRCodeWriter.CreateQrCode(data, 800, QRCodeWriter.QrErrorCorrectionLevel.Medium);
    qr.SetMargins(20); // Adequate quiet zone
    qr.ChangeBarCodeColor(System.Drawing.Color.Black);
    qr.ChangeBackgroundColor(System.Drawing.Color.White);
    return qr;
}
Public Function CreateMobileOptimizedQr(ByVal data As String) As GeneratedBarcode
    Dim qr = QRCodeWriter.CreateQrCode(data, 800, QRCodeWriter.QrErrorCorrectionLevel.Medium)
    qr.SetMargins(20) ' Adequate quiet zone
    qr.ChangeBarCodeColor(System.Drawing.Color.Black)
    qr.ChangeBackgroundColor(System.Drawing.Color.White)
    Return qr
End Function
$vbLabelText   $csharpLabel

对于跨平台移动开发,请探索.NET MAUI 条形码扫描器教程。 该库原生支持iOSAndroid平台。## 常见集成场景

创建营销活动二维码

要实现带有自定义品牌标识的可追踪营销二维码,请参阅条形码读取速度管理指南

public GeneratedBarcode CreateCampaignQr(string campaignId, string userId)
{
    string trackingUrl = "___PROTECTED_URL_79___";
    var qr = QRCodeWriter.CreateQrCodeWithLogo(trackingUrl, "logo.png", 1000);
    qr.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml("#1E3A8A"));
    qr.AddAnnotationTextAboveBarcode($"Campaign: {campaignId}");
    return qr;
}

// Batch generate campaign materials
public async Task GenerateCampaignBatch(List<string> userIds, string campaignId)
{
    var tasks = userIds.Select(async userId =>
    {
        var qr = CreateCampaignQr(campaignId, userId);
        await Task.Run(() => qr.SaveAsPng($"campaigns/{campaignId}/{userId}.png"));
    });

    await Task.WhenAll(tasks);
}
public GeneratedBarcode CreateCampaignQr(string campaignId, string userId)
{
    string trackingUrl = "___PROTECTED_URL_79___";
    var qr = QRCodeWriter.CreateQrCodeWithLogo(trackingUrl, "logo.png", 1000);
    qr.ChangeBarCodeColor(System.Drawing.ColorTranslator.FromHtml("#1E3A8A"));
    qr.AddAnnotationTextAboveBarcode($"Campaign: {campaignId}");
    return qr;
}

// Batch generate campaign materials
public async Task GenerateCampaignBatch(List<string> userIds, string campaignId)
{
    var tasks = userIds.Select(async userId =>
    {
        var qr = CreateCampaignQr(campaignId, userId);
        await Task.Run(() => qr.SaveAsPng($"campaigns/{campaignId}/{userId}.png"));
    });

    await Task.WhenAll(tasks);
}
Imports System.Drawing
Imports System.Threading.Tasks

Public Class BarcodeGenerator
    Public Function CreateCampaignQr(campaignId As String, userId As String) As GeneratedBarcode
        Dim trackingUrl As String = "___PROTECTED_URL_79___"
        Dim qr = QRCodeWriter.CreateQrCodeWithLogo(trackingUrl, "logo.png", 1000)
        qr.ChangeBarCodeColor(ColorTranslator.FromHtml("#1E3A8A"))
        qr.AddAnnotationTextAboveBarcode($"Campaign: {campaignId}")
        Return qr
    End Function

    ' Batch generate campaign materials
    Public Async Function GenerateCampaignBatch(userIds As List(Of String), campaignId As String) As Task
        Dim tasks = userIds.Select(Async Function(userId)
                                       Dim qr = CreateCampaignQr(campaignId, userId)
                                       Await Task.Run(Sub() qr.SaveAsPng($"campaigns/{campaignId}/{userId}.png"))
                                   End Function)

        Await Task.WhenAll(tasks)
    End Function
End Class
$vbLabelText   $csharpLabel

生成产品标签二维码

创建用于库存管理的二维码。 有关处理特殊格式的信息,请参阅GS1-128 故障排除指南。 使用特定类型的条形码(例如Code 39MSI 条形码)时,请参考特定格式的指南:

public void GenerateProductLabel(Product product)
{
    var productData = new
    {
        sku = product.SKU,
        batch = product.BatchNumber,
        expiry = product.ExpiryDate.ToString("yyyy-MM-dd")
    };

    string json = System.Text.Json.JsonSerializer.Serialize(productData);
    var qr = QRCodeWriter.CreateQrCode(json, 400, QRCodeWriter.QrErrorCorrectionLevel.High);
    qr.AddAnnotationTextAboveBarcode(product.Name);
    qr.SaveAsPng($"labels/product-{product.SKU}.png");
}

// Generate 1-BPP labels for thermal printers
public void GenerateThermalLabel(Product product)
{
    var qr = CreateProductQr(product);
    qr.SaveAs1BitPerPixelPng($"thermal/{product.SKU}.png");
}
public void GenerateProductLabel(Product product)
{
    var productData = new
    {
        sku = product.SKU,
        batch = product.BatchNumber,
        expiry = product.ExpiryDate.ToString("yyyy-MM-dd")
    };

    string json = System.Text.Json.JsonSerializer.Serialize(productData);
    var qr = QRCodeWriter.CreateQrCode(json, 400, QRCodeWriter.QrErrorCorrectionLevel.High);
    qr.AddAnnotationTextAboveBarcode(product.Name);
    qr.SaveAsPng($"labels/product-{product.SKU}.png");
}

// Generate 1-BPP labels for thermal printers
public void GenerateThermalLabel(Product product)
{
    var qr = CreateProductQr(product);
    qr.SaveAs1BitPerPixelPng($"thermal/{product.SKU}.png");
}
Public Sub GenerateProductLabel(product As Product)
    Dim productData = New With {
        .sku = product.SKU,
        .batch = product.BatchNumber,
        .expiry = product.ExpiryDate.ToString("yyyy-MM-dd")
    }

    Dim json As String = System.Text.Json.JsonSerializer.Serialize(productData)
    Dim qr = QRCodeWriter.CreateQrCode(json, 400, QRCodeWriter.QrErrorCorrectionLevel.High)
    qr.AddAnnotationTextAboveBarcode(product.Name)
    qr.SaveAsPng($"labels/product-{product.SKU}.png")
End Sub

' Generate 1-BPP labels for thermal printers
Public Sub GenerateThermalLabel(product As Product)
    Dim qr = CreateProductQr(product)
    qr.SaveAs1BitPerPixelPng($"thermal/{product.SKU}.png")
End Sub
$vbLabelText   $csharpLabel

对于特殊标签打印,请查看1-BPP 条形码图像指南。 阅读多页文档时,请参阅多页 GIF 和 TIFF 指南

提高条形码扫描性能

对于大批量扫描应用,实施作物区域以限制扫描区域并提高性能。 读取速度选项可对精度和速度之间的权衡进行精细控制:

// Define crop region for faster scanning
var cropRegion = new Rectangle(100, 100, 300, 300);
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Faster,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode,
    CropArea = cropRegion
};

var results = BarcodeReader.Read("image.png", options);
// Define crop region for faster scanning
var cropRegion = new Rectangle(100, 100, 300, 300);
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Faster,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode,
    CropArea = cropRegion
};

var results = BarcodeReader.Read("image.png", options);
' Define crop region for faster scanning
Dim cropRegion As New Rectangle(100, 100, 300, 300)
Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Faster,
    .ExpectBarcodeTypes = BarcodeEncoding.QRCode,
    .CropArea = cropRegion
}

Dim results = BarcodeReader.Read("image.png", options)
$vbLabelText   $csharpLabel

在使用System.Drawing 对象时,该库通过IronDrawing提供跨平台兼容性。

要点总结

IronBarcode 为 .NET 应用程序提供完整的二维码生成解决方案。 该库提供直观的 API、丰富的文档和可用于生产环境的功能,包括容错性跨平台支持性能优化。 通过更新日志了解最新功能。 对于注重安全性的部署,请查看安全 CVE 披露信息

请在许可页面查找许可信息。 IronBarcode 提供免费的开发者许可证,并提供包括支持和更新在内的高级选项。 对于现有客户,请了解许可证延期升级选项。 如果您需要有关许可方面的帮助,请参阅许可证密钥申请指南web.config 许可设置

对于生产环境部署,请参考AWS LambdaAzure FunctionsDocker 容器的相关指南。 要排查具体的部署问题,请参阅AWS Lambda 运行时指南运行时复制异常解决方案。 如果遇到误报,请查阅详细的故障排除指南。

如需技术支持,请提交工程请求。 该库会定期进行更新,如产品更新部分所示,以确保持续的兼容性和新功能。

快速入门二维码示例

只需几行代码即可生成具有自定义样式的二维码。 如需更多示例,请访问创建条形码示例,并探索读取条形码教程,以获取完整的条形码解决方案。 其他示例包括从 PDF 读取条形码从数据创建条形码

using IronBarCode;

// Create QR code with custom size and error correction
var qrCode = QRCodeWriter.CreateQrCode("___PROTECTED_URL_81___", 500, QRCodeWriter.QrErrorCorrectionLevel.High);

// Add styling
qrCode.ChangeBarCodeColor(System.Drawing.Color.Navy);
qrCode.AddBarcodeValueTextBelowBarcode();

// Save as image
qrCode.SaveAsPng("quickstart-qr.png");

// Export for API
byte[] pngBytes = qrCode.ToPngBinaryData();
using IronBarCode;

// Create QR code with custom size and error correction
var qrCode = QRCodeWriter.CreateQrCode("___PROTECTED_URL_81___", 500, QRCodeWriter.QrErrorCorrectionLevel.High);

// Add styling
qrCode.ChangeBarCodeColor(System.Drawing.Color.Navy);
qrCode.AddBarcodeValueTextBelowBarcode();

// Save as image
qrCode.SaveAsPng("quickstart-qr.png");

// Export for API
byte[] pngBytes = qrCode.ToPngBinaryData();
Imports IronBarCode

' Create QR code with custom size and error correction
Dim qrCode = QRCodeWriter.CreateQrCode("___PROTECTED_URL_81___", 500, QRCodeWriter.QrErrorCorrectionLevel.High)

' Add styling
qrCode.ChangeBarCodeColor(System.Drawing.Color.Navy)
qrCode.AddBarcodeValueTextBelowBarcode()

' Save as image
qrCode.SaveAsPng("quickstart-qr.png")

' Export for API
Dim pngBytes As Byte() = qrCode.ToPngBinaryData()
$vbLabelText   $csharpLabel

IronBarcode 支持通过.NET MAUIAWS LambdaAzureDocker和移动平台上部署。 如需技术支持,请提交工程请求。 查看安全漏洞 CVE 披露信息,以满足企业安全要求。

探索条形码读取功能,了解条形码识别的全部功能,包括支持读取 Code 39 条形码和其他特殊格式。 该库功能齐全,适用于需要可靠的条形码生成和扫描功能的企业应用程序。

常见问题解答

如何在 .NET 应用程序中生成 QR 代码?

您可以通过使用 IronBarcode 中的 QRCodeWriter.CreateQrCode 方法在 .NET 应用程序中生成二维码。该方法允许您指定二维码数据、大小和错误校正级别。

QR 代码有哪些可用的自定义选项?

IronBarcode 允许对 QR 代码进行自定义,包括更改颜色和嵌入公司徽标等图像。这些功能增强了 QR 代码的视觉吸引力和品牌集成。

如何在我的项目中安装 IronBarcode 库?

您可以通过 Visual Studio 的 NuGet 包管理器 UI、包管理器控制台或从 NuGet 网站下载,将 IronBarcode 安装到您的项目中。

IronBarcode可用于从视频帧中读取条码吗?

是的,IronBarcode 可以处理视频帧,允许通过修正旋转和噪声以实时读取条形码,从而提高条形码读取效率。

使用 IronBarcode 生成的 QR 代码可以保存为哪些文件格式?

使用 IronBarcode 生成的 QR 代码可以以多种格式保存,包括 PNG 和 HTML,为不同的应用程序需求提供灵活性。

IronBarcode 是否适用于控制台和网络应用程序?

是的,IronBarcode 兼具灵活性,可以在控制台和 .NET MVC 网络应用程序中使用,是各种开发环境的强大选择。

IronBarcode 中的 QR 代码有哪些纠错级别可用?

IronBarcode 支持四个级别的QR代码纠错:低、中、高和最高,确保即使QR代码损坏也能保持数据完整性。

IronBarcode 的许可选项是什么?

IronBarcode 提供了一个免费开发者许可证和一个包含额外支持和更新的高级版本,以满足不同的开发和业务需求。

IronBarcode 是否兼容 .NET Core 和 .NET Framework?

是的,IronBarcode 兼容 .NET Core 和 .NET Framework,支持包括32位和64位系统在内的各种体系结构。

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