IronQR 教程 在C#中编写QR代码 Write QR Codes in C Curtis Chau 已更新:2026年1月10日 下载 IronQR NuGet 下载 免费试用 LLM副本 LLM副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 This article was translated from English: Does it need improvement? Translated View the article in English 简介 通过 IronQR,开发人员可以为流行的图片格式创建二维码,并用背景颜色、边距、徽标对其进行自定义,甚至将其添加到 PDF 中。 对于高级用途,它还提供纠错和版本控制功能。 本文将结合实例探讨 IronQR 的主要功能,帮助您了解如何使用它在 C# 中编写二维码,并将其有效地应用到您的项目中。 目录 输入数据 文本、URLs、数字 二进制和流 导出 QR 代码 另存为图像。 System.Drawing.Images IronSoftware.Drawing Stamp on PDF QR 代码选项 编码 错误纠正 QR 代码版本 字符编码 QR 代码样式 调整大小。 边距和边框 Recolor 添加徽标 今天在您的项目中使用 IronQR,免费试用。 第一步: 免费开始 输入数据 文本、URL、数字 IronQR 可以将文本、URL 和数字等多种数据类型转换成 QR 码。 无论您是为市场营销和交流创建二维码链接或文本,还是为库存管理创建数字代码,抑或是将二进制数据或数据流编码为可读的二维码,IronQR 都能为您提供所需的一切支持。 此外,API 要简单明了。 QrWriter 类提供了多个重载,支持不同类型的数据作为输入,从而降低复杂性并简化流程。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-1.cs using IronQr; using IronSoftware.Drawing; string text = "Hello, World!"; string url = "https://ironsoftware.com/csharp/qr/"; string alphanumeric = "WATERSKU-12356"; // Create QR code QrCode textQr = QrWriter.Write(text); // Save QR code as a bitmap AnyBitmap textQrImage = textQr.Save(); // Save QR code as file textQrImage.SaveAs("textQr.png"); QrCode urlQr = QrWriter.Write(url); AnyBitmap urlQrImage = urlQr.Save(); urlQrImage.SaveAs("urlQr.png"); QrCode alphanumericQr = QrWriter.Write(alphanumeric); AnyBitmap alphanumericQrImage = alphanumericQr.Save(); alphanumericQrImage.SaveAs("alphanumericQr.png"); $vbLabelText $csharpLabel 二进制和流 类似地,我们可以使用前面提到的相同方法将二进制数据和流转换为 QR 码。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-2.cs using IronQr; using IronSoftware.Drawing; using System.Text; byte[] bytes = Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/qr/"); // Create QR code QrCode bytesQr = QrWriter.Write(bytes); // Save QR code as a bitmap AnyBitmap qrImage = bytesQr.Save(); // Save QR code bitmap to file qrImage.SaveAs("bytesQr.png"); $vbLabelText $csharpLabel 类别 程序 { static void Main() { // 创建二维码写入器实例 QrWriter writer = QrWriter.CreateQrCode(); // 示例二进制数据 byte[] data = { 0x01, 0x02, 0x03, 0x04 }; // 将二进制数据写入二维码 writer.Write(data) .SaveAs("binary-qr.png"); // 使用内存流的示例 using (MemoryStream stream = new MemoryStream(data)) { writer.Write(stream) .SaveAs("stream-qr.png"); } } } Write 方法有重载,可以接受字节数组和流作为输入。 对于流,我们可以从字节数组创建一个 MemoryStream,然后将其转换为二维码。 当用户需要对数据块进行更精细的控制时,这将非常有用,因为流可以更节省内存。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-3.cs using IronQr; using IronSoftware.Drawing; using System.IO; using System.Text; MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/qr/")); // Create QR code QrCode streamQr = QrWriter.Write(stream); // Save QR code as a bitmap AnyBitmap streamQrImage = streamQr.Save(); // Save QR code bitmap as file streamQrImage.SaveAs("streamQr.png"); $vbLabelText $csharpLabel 导出 QR 代码 IronQR 具有灵活性,可适应需要不同文件格式的各种用例。 您可以使用 SaveAs 方法将二维码保存为 JPG、PNG、GIF 和 TIFF 等多种格式。 保存为图像 来自 AnyBitmap 的 SaveAs 方法可根据提供的文件路径自动检测文件格式。 在这个例子中,我指定了一个以 .png 结尾的文件路径。 请注意使用 SaveAs 方法时,请注意没有默认的图像格式。 如果输入无法识别的文件扩展名或文件路径拼写错误,图像将以错误的扩展名保存。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-4.cs using IronQr; using IronSoftware.Drawing; // Create a QR code object QrCode qr = QrWriter.Write("hello world"); // Save QR code as a bitmap AnyBitmap qrImage = qr.Save(); // Save QR code bitmap as file qrImage.SaveAs("qr.png"); $vbLabelText $csharpLabel 系统.绘图.图像 将图像转换为 Microsoft 的 System.Drawing.Images 对象,即可使用 Bitmap 类将二维码保存到文件路径。 在这个例子中,Save 方法将二维码保存为 PNG 文件到路径 qrBitmap.png。 System.Drawing.Common 仅在 Windows 平台上受支持。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-5.cs using IronQr; using System.Drawing; // Create a QR code object QrCode qr = QrWriter.Write("hello world"); // Save QR code as a bitmap Bitmap qrImage = qr.Save(); // Save QR code bitmap as file qrImage.Save("qrBitmap.png"); $vbLabelText $csharpLabel IronSoftware.Drawing 由于 System.Drawing.Common 缺乏跨平台兼容性,开发人员在维护跨平台应用程序时可能会遇到问题。 IronQR可以同时使用 System.Drawing.Common 和 IronSoftware.Drawing。 IronQR使用了来自 @@--CODE-586--CODE-585--CODE-586 的@@--CODE-585--CODE-586类,这是一个通用兼容的 Bitmap 类,它会隐式转换为以下类型: System.Drawing.Bitmap System.Drawing.Image SkiaSharp.SKBitmap SixLabors.ImageSharp Microsoft.Maui.Graphics.Platform.PlatformImage 借助这个强大的开源库, IronQR实现了跨平台支持,并兼容 .NET Standard 和 .NET Framework 4.6.2+。 要了解有关该库的更多信息,请访问IronSoftware.Drawing网站。 在 PDF 上盖章 IronQR 允许开发人员在现有 PDF 文档上加盖 QR 码,方便他人快速访问链接或其他资源。 支持在单页和多页上印制二维码。 加盖单页印章 创建二维码后,从 @@--CODE-600--CODE-599--CODE-600 对象调用 @@--CODE-599--CODE-600 对象的方法。 此方法需要提供文件路径、坐标(x 和 y)、页码以及密码(如果 PDF 受密码保护)。 提供参数后,该方法会在 QR 代码上盖章并保存 PDF。 请注意此方法基于PDF页面,页码从1开始而不是从0开始。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-6.cs using IronQr; // Create a QR code object QrCode qr = QrWriter.Write("hello world"); string filepath = "example.pdf"; int x = 100; int y = 150; int page = 1; // Stamp QR code to (100, 150) of the pdf on page 1 qr.StampToExistingPdfPage(filepath, x, y, page); $vbLabelText $csharpLabel 标记为多个页面 与上面的例子类似,主要区别在于 StampToExistingPdfPages 方法接受的是页码列表而不是单个页码。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-7.cs using IronQr; using System.Collections.Generic; // Create a QR code object QrCode qr = QrWriter.Write("hello world"); string filepath = "example.pdf"; int x = 100; int y = 150; List<int> pages = new List<int>(); pages.Add(1); pages.Add(2); pages.Add(3); pages.Add(4); // Stamp QR code to (100, 150) of the pdf on pages 1-4 qr.StampToExistingPdfPages(filepath, x, y, pages); $vbLabelText $csharpLabel 两个示例的输出 QR 代码选项 IronQR 提供广泛的自定义选项,可对 QR 代码行为和功能进行微调。 QrOptions 类提供了几个参数,例如版本控制、编码类型、字符编码和纠错级别。 让我们来详细探讨一下这些选项。 编码 IronQR 支持创建和读取多种类型的二维码。 以下是支持的类型: QRCode: 这是目前常用的标准二维码。 它最多可存储 7089 个数字字符或 4296 个字母数字字符。 MicroQRCode: 标准二维码的较小版本,最多可存储 35 个数字字符或 21 个字母数字字符。 RMQRCode: 矩形微型二维码是二维码的紧凑版本,其纵横比具有灵活性。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-8.cs using IronQr; using IronSoftware.Drawing; QrOptions options = new QrOptions { // Change encoding to micro QR code Encoding = IronQr.Enum.QrEncoding.MicroQRCode, }; // Create QR code QrCode qr = QrWriter.Write("1234", options); // Save QR code as a bitmap AnyBitmap qrImage = qr.Save(); // Save QR code bitmap as file qrImage.SaveAs("qrImage.png"); $vbLabelText $csharpLabel 错误修正 IronQR 采用标准 QR 纠错技术,确保生成的所有 QR 代码即使在恶劣条件下也具有容错性和可靠性。 此外,IronQR 允许您完全控制纠错级别,以便进一步微调。 QrErrorCorrectionLevel 提供了四级纠错机制: Highest: 30% 错误纠正 High: 25% 错误纠正 Medium: 15% 错误纠正 Low: 7% 错误纠正 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-9.cs using IronQr; using IronSoftware.Drawing; QrOptions options = new QrOptions { // Change error correction level to medium ErrorCorrectionLevel = QrErrorCorrectionLevel.Medium, }; // Create QR code QrCode qr = QrWriter.Write("1234", options); // Save QR code as a bitmap AnyBitmap qrImage = qr.Save(); // Save QR code bitmap as file qrImage.SaveAs("qrImage.png"); $vbLabelText $csharpLabel 与低纠错率的二维码相比,高纠错率的二维码在读取时具有更强的容错能力,更有可能在较低分辨率下被扫描。 您可以根据自己的使用情况进行测试。 QR 代码版本 您可以调整二维码版本,以存储更多数据。 高版本是库存或物流的理想选择,而低版本则适用于较小的数据,如短 URL。 只需更改 QrOptions 对象中的 Version 属性,并将其传递给 Write 方法,即可根据需要生成二维码。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-10.cs using IronQr; using IronSoftware.Drawing; QrOptions options = new QrOptions { // Change QR code version to 40 Version = 40, }; // Create QR code QrCode qr = QrWriter.Write("1234", options); // Save QR code as a bitmap AnyBitmap qrImage = qr.Save(); // Save QR code bitmap as file qrImage.SaveAs("qrImage.png"); $vbLabelText $csharpLabel 从输出结果中可以看出,与第 5 版相比,第 40 版的二维码非常复杂和密集。 低版本需要更精确的扫描,没有更高分辨率的扫描仪可能难以扫描。 不过,更高的版本更容易扫描,即使使用较低分辨率的相机也是如此。 有关根据容量选择 QR 版本的更详细指南,请参阅 QR 版本列表。 字符编码 该选项决定了 QR 代码的编码方式。 在我们的示例中,我们将其改为 "UTF-32",而默认字符编码为 "ISO-8859-1"。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-11.cs using IronQr; using IronSoftware.Drawing; QrOptions options = new QrOptions { // Change character encoding to UTF-32 CharacterEncoding = "UTF-32" }; // Create QR code QrCode qr = QrWriter.Write("1234", options); // Save QR code as a bitmap AnyBitmap qrImage = qr.Save(); // Save QR code bitmap as file qrImage.SaveAs("qrImage.png"); $vbLabelText $csharpLabel QR 代码样式 除了简单易用的方法和处理输入数据的灵活性,IronQR 还提供了许多自定义和风格化 QR 代码的选项,使其独一无二。 QrStyleOptions 类提供了各种参数,用于自定义二维码的各个方面。 让我们来探讨一下可用的选项。 调整大小 要调整二维码的大小,您可以设置 Dimensions 对象的 QrStyleOptions 属性,然后将其传递给 Save 方法。 默认情况下,二维码的尺寸为 300px。 在本示例中,我们将二维码的尺寸保存为 600px,而不是 300px。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-12.cs using IronQr; using IronSoftware.Drawing; QrStyleOptions styleOptions = new QrStyleOptions() { // Change the dimensions to 600px Dimensions = 600, }; string url = "https://ironsoftware.com/csharp/qr/"; // Create QR code QrCode qr = QrWriter.Write(url); // Save QR code as a bitmap AnyBitmap qrImage = qr.Save(styleOptions); // Save QR code bitmap as file qrImage.SaveAs("qrURLResized.png"); $vbLabelText $csharpLabel 边距和边框 要调整边距和边框,我们可以使用 Margins 类的 QrStyleOptions 属性。 该属性可控制二维码各边的边距,默认值为 10px。 在我们的示例中,我们将页边距设置为 20px。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-13.cs using IronQr; using IronSoftware.Drawing; QrStyleOptions styleOptions = new QrStyleOptions() { // Change margins to 20px Margins = 20 }; string url = "https://ironsoftware.com/csharp/qr/"; // Create QR code QrCode qr = QrWriter.Write(url); // Save QR code as a bitmap AnyBitmap qrImage = qr.Save(styleOptions); // Save QR code bitmap as file qrImage.SaveAs("qrURLMarginMultiple.png"); $vbLabelText $csharpLabel 更改每页边距 IronQR 还允许用户为每一面指定不同的页边距,提供更精细的控制。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-14.cs using IronQr; using IronSoftware.Drawing; QrStyleOptions styleOptions = new QrStyleOptions() { // Change margins MarginBottom = 30, MarginTop = 100, MarginRight = 40, MarginLeft = 20, }; string url = "https://ironsoftware.com/csharp/qr/"; // Create QR code QrCode qr = QrWriter.Write(url); // Save QR code as a bitmap AnyBitmap qrImage = qr.Save(styleOptions); // Save QR code bitmap as file qrImage.SaveAs("qrURLMarginMultiple.png"); $vbLabelText $csharpLabel 颜色 我们可以使用 QrStyleOptions 类为二维码及其背景添加颜色。 自定义颜色可以使 QR 代码更加独特和醒目。 您可以使用 Color 和 BackgroundColor 属性更改颜色。 请务必导入 IronSoftware.Drawing,以获取可分配颜色的列表。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-15.cs using IronQr; using IronSoftware.Drawing; // Load new logo image AnyBitmap logo = AnyBitmap.FromFile("sample.png"); // Add new logo to QR code style options QrStyleOptions styleOptions = new QrStyleOptions() { Logo = new QrLogo(logo, 50, 50, 10), }; string url = "https://ironsoftware.com/csharp/qr/"; // Create QR code QrCode qr = QrWriter.Write(url); // Save QR code as a bitmap AnyBitmap qrImage = qr.Save(styleOptions); // Save QR code bitmap as file qrImage.SaveAs("qrURLColored.png"); $vbLabelText $csharpLabel 添加徽标 除了颜色和尺寸,您还可以将公司徽标应用到 QR 代码中。 这有助于用户立即识别二维码并将其与您的品牌联系起来。 使用 Logo 属性,可以通过添加公司徽标轻松自定义二维码。 :path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-15.cs using IronQr; using IronSoftware.Drawing; // Load new logo image AnyBitmap logo = AnyBitmap.FromFile("sample.png"); // Add new logo to QR code style options QrStyleOptions styleOptions = new QrStyleOptions() { Logo = new QrLogo(logo, 50, 50, 10), }; string url = "https://ironsoftware.com/csharp/qr/"; // Create QR code QrCode qr = QrWriter.Write(url); // Save QR code as a bitmap AnyBitmap qrImage = qr.Save(styleOptions); // Save QR code bitmap as file qrImage.SaveAs("qrURLColored.png"); $vbLabelText $csharpLabel 自定义徽标 QrLogo 类允许进一步自定义徽标的外观。 以下是可用属性: Bitmap: 表示您要用作徽标的图像。 Width: 表示徽标的宽度。 默认值为 0。 Height: 表示徽标的高度。 默认值为 0。 CornerRadius: 表示徽标边角的圆角半径。 默认情况下,它被设置为 0,这意味着徽标的边角将是方形的。 using IronQRCode; using IronSoftware.Drawing; 类别 程序 { static void Main() { `QrStyleOptions` styleOptions = new `QrStyleOptions` { `Logo` = new `QrLogo` { `Bitmap` = `AnyBitmap.FromBitmap`("path/to/logo.png"), `Width` = 50, `Height` = 50, `CornerRadius` = 5 } }; `QrCode` qr = `QrWriter.CreateQrCode`() .Write("Customized Logo Example"); qr.SaveAs("example-customized-logo-qr.png", styleOptions); } } using IronQRCode; using IronSoftware.Drawing; 类别 程序 { static void Main() { `QrStyleOptions` styleOptions = new `QrStyleOptions` { `Logo` = new `QrLogo` { `Bitmap` = `AnyBitmap.FromBitmap`("path/to/logo.png"), `Width` = 50, `Height` = 50, `CornerRadius` = 5 } }; `QrCode` qr = `QrWriter.CreateQrCode`() .Write("Customized Logo Example"); qr.SaveAs("example-customized-logo-qr.png", styleOptions); } } $vbLabelText $csharpLabel 检查容错能力 除了文件格式和自定义方面的广泛灵活性,灵活性还延伸到调试和错误处理方面。 IronQR 为开发人员提供了处理异常和编写单元测试以验证应用程序的各种工具。 检查和 QR 代码有时可能会损坏,但 IronQR 内置了校验和和数据校正功能,可以保证 QR 代码正常运行。 它使用 Reed-Solomon 纠错算法,确保 QR 代码保持容错性。 详细的错误信息 IronQR 提供详细的错误信息,帮助用户快速发现问题。 这些信息包含具体的异常列表,使调试和解决问题更加简单明了。 以下是库中使用的 IronQrException 列表。 IronQrEncodingException: IronQrException 的子类,当写入二维码时出现问题,就会发生此错误。 例如,如果用户试图用空字符串创建二维码,就会出现这样的提示。 IronQrFileException: IronQrException 的子类,当出现与文件相关的问题时,会发生此错误。 IronQrPdfPasswordExcception: IronQrException 的子类,当用户尝试盖章的 PDF 文件受密码保护,且未提供密码或提供了错误的密码时,会发生此错误。 它还涵盖了其他与 PDF 相关的错误,例如当 PDF 无法打开时,如示例所示。 结论 IronQR 为在 .NET 应用程序中生成和定制 QR 代码提供了一套全面的方法。 凭借其强大的功能,开发人员可以轻松创建具有各种数据编码、视觉样式和纠错级别的 QR 代码。 该库支持多种输出格式,并可无缝集成到现有文档中,是任何二维码项目的通用工具。 无论您需要的是基本的 QR 码还是高级的品牌解决方案,IronQR 都能提供灵活性和功能性,高效满足您的需求。 要了解更多信息,请查看IronQR 文档,从免费试用开始探索,并查看许可选项,了解哪种计划最适合您的需求。 常见问题解答 如何在 C# 中生成 QR 码? 您可以通过使用 IronQR 中提供的 QrWriter 类在 C# 中生成二维码。此类允许您将数据写入二维码并以各种图片格式保存。只需使用 Write 方法来编码您的数据,并使用 SaveAs 来输出二维码。 我可以对二维码应用哪些类型的自定义? IronQR 允许您通过更改颜色、添加标志、调整大小和调整边距来自定义二维码。使用 QrStyleOptions 类来应用这些自定义。 我可以使用 C# 将二维码嵌入到 PDF 中吗? 是的,您可以通过利用 StampToExistingPdfPage 或 StampToExistingPdfPages 方法使用 IronQR 将二维码嵌入到 PDF 中。这允许您指定二维码应出现的位置和页面。 如何在创建二维码时处理错误? IronQR 具有强大的错误处理功能,提供如 IronQrEncodingException、IronQrFileException 和 IronQrPdfPasswordException 等错误消息,以协助调试和解决问题。 我可以将二维码导出为哪些格式? 使用 IronQR,您可以将二维码导出为包括 JPG、PNG、GIF 和 TIFF 在内的各种格式。SaveAs 方法允许您指定二维码输出的所需格式。 该库是否支持跨平台开发? 是的,通过 IronSoftware.Drawing 库,IronQR 支持跨平台开发,使其兼容于不同的 .NET 版本和平台。 可以添加标志到二维码以用于品牌化吗? 您可以通过在 QrStyleOptions 类中设置 Logo 属性来添加标志到二维码中,让品牌二维码具有定制的标志外观。 二维码中的错误校正目的是什么? IronQR 支持的二维码错误校正确保即使部分损坏,二维码仍然可读。此功能提供四个校正级别:最高、高、中和低,以适应不同的使用场景。 可以将哪些数据类型编码到二维码中? IronQR 可以将多种数据类型编码到二维码中,包括文本、URL、数字、二进制数据和流,提供数据表达的灵活性。 如何用 C# 创建带有 URL 的二维码? 要在 C# 中创建带有 URL 的二维码,请在 IronQR 中使用 QrWriter 类。利用 Write 方法编码 URL,并使用 SaveAs 将二维码作为图像存储。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 准备开始了吗? Nuget 下载 61,359 | 版本: 2026.3 刚刚发布 免费试用 免费 NuGet 下载 总下载量:61,359 查看许可证 还在滚动吗? 想快速获得证据? PM > Install-Package IronQR 运行示例 观看您的 URL 变成 QR 代码。 免费 NuGet 下载 总下载量:61,359 查看许可证