如何用 C# 编写二维码
介绍
通过 IronQR,开发人员可以为流行的图片格式创建二维码,并用背景颜色、边距、徽标对其进行自定义,甚至将其添加到 PDF 中。 对于高级用途,它还提供纠错和版本控制功能。
本文将结合实例探讨 IronQR 的主要功能,帮助您了解如何使用它在 C# 中编写二维码,并将其有效地应用到您的项目中。
目录
- 输入数据
- 文本、URL、数字
- 二进制和流
- 导出二维码
- 另存为图片
- System.Drawing.Images
- IronSoftware.Drawing
- 在 PDF 上盖章
- QR 代码选项
- 编码
- 纠错
- 二维码版本
- 字符编码
- QR 代码样式
- 调整大小
- 页边距和边框
- 色彩
立即在您的项目中开始使用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");
Imports IronQr
Imports IronSoftware.Drawing
Private text As String = "Hello, World!"
Private url As String = "https://ironsoftware.com/csharp/qr/"
Private alphanumeric As String = "WATERSKU-12356"
' Create QR code
Private textQr As QrCode = QrWriter.Write(text)
' Save QR code as a bitmap
Private textQrImage As AnyBitmap = textQr.Save()
' Save QR code as file
textQrImage.SaveAs("textQr.png")
Dim urlQr As QrCode = QrWriter.Write(url)
Dim urlQrImage As AnyBitmap = urlQr.Save()
urlQrImage.SaveAs("urlQr.png")
Dim alphanumericQr As QrCode = QrWriter.Write(alphanumeric)
Dim alphanumericQrImage As AnyBitmap = alphanumericQr.Save()
alphanumericQrImage.SaveAs("alphanumericQr.png")
二进制和流
同样,我们也可以使用前面提到的 "写入 "方法将二进制数据和数据流转换为 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");
Imports IronQr
Imports IronSoftware.Drawing
Imports System.Text
Private bytes() As Byte = Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/qr/")
' Create QR code
Private bytesQr As QrCode = QrWriter.Write(bytes)
' Save QR code as a bitmap
Private qrImage As AnyBitmap = bytesQr.Save()
' Save QR code bitmap to file
qrImage.SaveAs("bytesQr.png")
写入 "方法具有接受字节数组和流作为输入的重载。 对于流,我们可以从字节数组中创建一个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");
Imports IronQr
Imports IronSoftware.Drawing
Imports System.IO
Imports System.Text
Private stream As New MemoryStream(Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/qr/"))
' Create QR code
Private streamQr As QrCode = QrWriter.Write(stream)
' Save QR code as a bitmap
Private streamQrImage As AnyBitmap = streamQr.Save()
' Save QR code bitmap as file
streamQrImage.SaveAs("streamQr.png")
导出 QR 代码
IronQR 具有灵活性,可适应需要不同文件格式的各种用例。 您可以使用 "SaveAs "方法将 QR 代码保存为 JPG、PNG、GIF 和 TIFF 等多种格式。
另存为图片
AnyBitmap的 "SaveAs "方法可根据提供的文件路径自动检测文件格式。 在本例中,我指定了一个以 .png 结尾的文件路径。
请注意
: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");
Imports IronQr
Imports IronSoftware.Drawing
' Create a QR code object
Private qr As QrCode = QrWriter.Write("hello world")
' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save()
' Save QR code bitmap as file
qrImage.SaveAs("qr.png")
System.Drawing.Images
将图像转换为微软的System.Drawing.Images对象后,您就可以使用Bitmap类将二维码保存到文件路径中。 在本例中,"保存 "方法将二维码保存为 PNG 文件,路径为 "qrBitmap.png"。
请注意
: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");
Imports IronQr
Imports System.Drawing
' Create a QR code object
Private qr As QrCode = QrWriter.Write("hello world")
' Save QR code as a bitmap
Private qrImage As Bitmap = qr.Save()
' Save QR code bitmap as file
qrImage.Save("qrBitmap.png")
IronSoftware.Drawing
由于System.Drawing.Common缺乏跨平台兼容性,开发人员在维护跨平台应用程序时可能会遇到问题。 IronQR 可同时使用 System.Drawing.Common 和 IronSoftware.Drawing。
IronQR 使用了AnyBitmap类。IronSoftware.Drawing我们需要一个普遍兼容的 Bitmap 类,该类隐式地投向以下对象:
- 系统.绘图.位图
- 系统.绘图.图像
- SkiaSharp.SK 位图
- SixLabors.ImageSharp
Microsoft.Maui.Graphics.Platform.PlatformImage
通过这个强大的开源库,IronQR 实现了跨平台支持,并兼容 .NET 8、.NET 7、.NET 6、.NET 5、.NET Core、.NET Standard 和 .NET Framework 4.6.2+。 要了解有关该库的更多信息,请参阅IronSoftware.Drawing网站。
在 PDF 上盖章
IronQR 允许开发人员在现有 PDF 文档上加盖 QR 码,方便他人快速访问链接或其他资源。 支持在单页和多页上印制二维码。
单页加印
创建 QR 代码后,调用 QrCode 对象中的 StampToExistingPdfPage
方法。 此方法需要文件路径、坐标(x 和 y)如果 PDF 文件有密码保护,还需提供页码和可选密码。 一旦提供了参数,该方法就会在二维码上盖章并保存 PDF。
请注意
: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);
Imports IronQr
' Create a QR code object
Private qr As QrCode = QrWriter.Write("hello world")
Private filepath As String = "example.pdf"
Private x As Integer = 100
Private y As Integer = 150
Private page As Integer = 1
' Stamp QR code to (100, 150) of the pdf on page 1
qr.StampToExistingPdfPage(filepath, x, y, page)
戳记到多个页面
与上面的示例类似,主要区别在于 "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);
Imports IronQr
Imports System.Collections.Generic
' Create a QR code object
Private qr As QrCode = QrWriter.Write("hello world")
Private filepath As String = "example.pdf"
Private x As Integer = 100
Private y As Integer = 150
Private pages As New List(Of Integer)()
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)
两个示例的输出结果
QR 码选项
IronQR 提供广泛的自定义选项,可对 QR 代码行为和功能进行微调。 QrOptions 类提供了多个参数,如版本控制、编码类型、字符编码和纠错级别。 让我们来详细探讨一下这些选项。
编码
IronQR 支持创建和读取多种类型的二维码。 以下是支持的类型:
- QRCode:这是目前常用的标准 QR 码。 它最多可存储 7089 个数字字符或 4296 个字母数字字符。
- MicroQRCode:标准 QR 码的缩小版,最多可存储 35 个数字字符或 21 个字母数字字符。
- RMQRCode:矩形微型 QR 码是 QR 码的紧凑版本,在长宽比方面具有灵活性。
: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");
Imports IronQr
Imports IronSoftware.Drawing
Private options As New QrOptions With {.Encoding = IronQr.Enum.QrEncoding.MicroQRCode}
' Create QR code
Private qr As QrCode = QrWriter.Write("1234", options)
' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save()
' Save QR code bitmap as file
qrImage.SaveAs("qrImage.png")
纠错
IronQR 采用标准 QR 纠错技术,确保生成的所有 QR 代码即使在恶劣条件下也具有容错性和可靠性。 此外,IronQR 允许您完全控制纠错级别,以便进一步微调。
由 QrErrorCorrectionLevel 提供四级纠错:
- 最高:30%的错误纠正
- 高: 25% 错误纠正
- 中等:15%错误更正
- 低: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");
Imports IronQr
Imports IronSoftware.Drawing
Private options As New QrOptions With {.ErrorCorrectionLevel = QrErrorCorrectionLevel.Medium}
' Create QR code
Private qr As QrCode = QrWriter.Write("1234", options)
' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save()
' Save QR code bitmap as file
qrImage.SaveAs("qrImage.png")
与低纠错率的二维码相比,高纠错率的二维码在读取时具有更强的容错能力,更有可能在较低分辨率下被扫描。 您可以根据自己的使用情况进行测试。
二维码版本
您可以调整二维码版本,以存储更多数据。 高版本是库存或物流的理想选择,而低版本则适用于较小的数据,如短 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");
Imports IronQr
Imports IronSoftware.Drawing
Private options As New QrOptions With {.Version = 40}
' Create QR code
Private qr As QrCode = QrWriter.Write("1234", options)
' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save()
' Save QR code bitmap as file
qrImage.SaveAs("qrImage.png")
从输出结果中可以看出,与第 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");
Imports IronQr
Imports IronSoftware.Drawing
Private options As New QrOptions With {.CharacterEncoding = "UTF-32"}
' Create QR code
Private qr As QrCode = QrWriter.Write("1234", options)
' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save()
' Save QR code bitmap as file
qrImage.SaveAs("qrImage.png")
QR 代码样式
除了简单易用的方法和处理输入数据的灵活性,IronQR 还提供了许多自定义和风格化 QR 代码的选项,使其独一无二。 QrStyleOptions 类提供了用于定制二维码各个方面的各种参数。 让我们来探讨一下可用的选项。
调整大小
要调整 QR 代码的大小,您可以设置 QrStyleOptions 对象的 Dimensions 属性,然后将其传递给 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");
Imports IronQr
Imports IronSoftware.Drawing
Private styleOptions As New QrStyleOptions() With {.Dimensions = 600}
Private url As String = "https://ironsoftware.com/csharp/qr/"
' Create QR code
Private qr As QrCode = QrWriter.Write(url)
' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save(styleOptions)
' Save QR code bitmap as file
qrImage.SaveAs("qrURLResized.png")
页边距和边框
要调整页边距和边框,我们可以使用 QrStyleOptions 类的 Margins 属性。 该属性可控制二维码各边的边距,默认值为 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");
Imports IronQr
Imports IronSoftware.Drawing
Private styleOptions As New QrStyleOptions() With {.Margins = 20}
Private url As String = "https://ironsoftware.com/csharp/qr/"
' Create QR code
Private qr As QrCode = QrWriter.Write(url)
' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save(styleOptions)
' Save QR code bitmap as file
qrImage.SaveAs("qrURLMarginMultiple.png")
更改每边的页边距
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");
Imports IronQr
Imports IronSoftware.Drawing
Private styleOptions As New QrStyleOptions() With {
.MarginBottom = 30,
.MarginTop = 100,
.MarginRight = 40,
.MarginLeft = 20
}
Private url As String = "https://ironsoftware.com/csharp/qr/"
' Create QR code
Private qr As QrCode = QrWriter.Write(url)
' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save(styleOptions)
' Save QR code bitmap as file
qrImage.SaveAs("qrURLMarginMultiple.png")
色彩
我们可以使用 QrStyleOptions 类为二维码及其背景添加颜色。 自定义颜色可以使 QR 代码更加独特和醒目。 您可以使用 Color 和 BackgroundColor 属性更改颜色。 请务必导入 IronSoftware.Drawing,以获取可分配的可用颜色列表。
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-15.cs
using IronQr;
using IronSoftware.Drawing;
QrStyleOptions styleOptions = new QrStyleOptions()
{
// Change color
BackgroundColor = Color.Blue,
Color = Color.Red
};
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");
Imports IronQr
Imports IronSoftware.Drawing
Private styleOptions As New QrStyleOptions() With {
.BackgroundColor = Color.Blue,
.Color = Color.Red
}
Private url As String = "https://ironsoftware.com/csharp/qr/"
' Create QR code
Private qr As QrCode = QrWriter.Write(url)
' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save(styleOptions)
' Save QR code bitmap as file
qrImage.SaveAs("qrURLColored.png")
添加徽标
除了颜色和尺寸,您还可以将公司徽标应用到 QR 代码中。 这有助于用户立即识别二维码并将其与您的品牌联系起来。 徽标属性可通过添加贵公司的徽标轻松定制 QR 代码。
:path=/static-assets/qr/content-code-examples/tutorials/csharp-qr-writing-15.cs
using IronQr;
using IronSoftware.Drawing;
QrStyleOptions styleOptions = new QrStyleOptions()
{
// Change color
BackgroundColor = Color.Blue,
Color = Color.Red
};
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");
Imports IronQr
Imports IronSoftware.Drawing
Private styleOptions As New QrStyleOptions() With {
.BackgroundColor = Color.Blue,
.Color = Color.Red
}
Private url As String = "https://ironsoftware.com/csharp/qr/"
' Create QR code
Private qr As QrCode = QrWriter.Write(url)
' Save QR code as a bitmap
Private qrImage As AnyBitmap = qr.Save(styleOptions)
' Save QR code bitmap as file
qrImage.SaveAs("qrURLColored.png")
自定义徽标
QrLogo 类允许进一步自定义徽标的外观。 以下是可用的属性:
- 位图:代表您希望用作徽标的图像。
- 宽度:代表徽标的宽度。 默认值为 0。
- *高度***:代表徽标的高度。 默认值为 0。
- CornerRadius:代表将徽标边角修圆的半径。 默认情况下,它被设置为 0,这意味着徽标的边角将是方形的。
检查容错性
除了文件格式和自定义方面的广泛灵活性,灵活性还延伸到调试和错误处理方面。 IronQR 为开发人员提供了处理异常和编写单元测试以验证应用程序的各种工具。
校验和
QR 代码有时可能会损坏,但 IronQR 内置了校验和和数据校正功能,可以保证 QR 代码正常运行。 它使用了里德-所罗门纠错算法此外,还要确保 QR 代码的容错性。
详细错误信息
IronQR 提供详细的错误信息,帮助用户快速发现问题。 这些信息包含具体的异常列表,使调试和解决问题更加简单明了。 以下是该库使用的IronQrException列表。
IronQrEncodingException:是IronQrException的子类,当写入 QR 代码时出现问题,就会发生此错误。 例如,如果用户试图用空字符串创建二维码,就会出现这样的提示。
- IronQrFileException:是IronQrException的子类,当出现与文件相关的问题时会出现该错误。
IronQrPdfPasswordExcception:作为IronQrException的一个子类,当用户试图加盖的 PDF 受密码保护,且未提供密码或提供的密码不正确时,就会出现该错误。 它还涵盖了其他与 PDF 相关的错误,例如当 PDF 无法打开时,如示例所示。
结论
IronQR 为在 .NET 应用程序中生成和定制 QR 代码提供了一套全面的方法。 凭借其强大的功能,开发人员可以轻松创建具有各种数据编码、视觉样式和纠错级别的 QR 代码。 该库支持多种输出格式,并可无缝集成到现有文档中,是任何二维码项目的通用工具。 无论您需要的是基本的 QR 码还是高级的品牌解决方案,IronQR 都能提供灵活性和功能性,高效满足您的需求。