IRONSOFTWAREHOME
USING IRONBARCODE

如何使用IronBarcode在 C# 中生成二维码

Curtis Chau
Curtis Chau
Updated: 2026年5月8日

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

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

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

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

读取和写入20多种条码格式,包括UPC、EAN、Code 128和DataMatrix。 查看所有支持的格式

如何使用IronBarcode生成二维码?

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

如何创建一个新项目?

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

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

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

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

有哪些安装方法?

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

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

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

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

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

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

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

PM > Install-Package BarCode

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

如何从NuGet或IronBarcode网站下载?

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

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

如何生成基本的二维码?

使用QRCodeWriter类中创建QR码。 有关完整示例,请参阅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;
}

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;
}

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");

WiFi 配置:

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

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

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

使用CreateQrCodeWithLogo添加公司标志到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;
}

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

// 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");

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

保存各种格式的二维码,以适应不同的使用场景。 了解更多信息,请参阅保存条形码示例条形码图像生成器教程。 对于特殊要求,请参阅创建 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
}

有关 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");
}

对于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();
        }
    }
}

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

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

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

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

级别恢复使用案例
low7%清洁的数字环境
语言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;
}

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

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

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;
}

对于跨平台移动开发,请探索.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);
}

生成产品标签二维码

创建用于库存管理的二维码。 有关处理特殊格式的信息,请参阅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");
}

对于特殊标签打印,请查看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);

在处理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();

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

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

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户