使用 Aspose.BarCode 在 .NET 中创建可自定义的 QR 代码

创建可自定义的 QR 代码是提供链接、ID 和应用程序深度的连接的强大方式,同时保持品牌。 使用 Aspose.BarCode for .NET,您可以轻松修复错误、模块尺寸、颜色和输出格式,以满足功能和美学需求。

原則

  • .NET 8(或 .Net 6+) SDK
  • 可访问(Aspose.BarCode)
  • 基本熟悉与 System.Drawing
  • (可选)印刷使用案例的高分辨率输出目标

创建一个项目 & 添加包

 dotnet new console -n CustomizableQRCodeExample -f net8.0
 cd CustomizableQRCodeExample
 dotnet add package Aspose.BarCode

完整的例子

using System;
using System.Drawing;
using Aspose.BarCode.Generation;

namespace CustomizableQRCodeExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Step 1: Create a QR code generator with specific settings
            var qrGenerator = new BarcodeGenerator(EncodeTypes.QR, "https://www.aspose.com");

            // Step 2: Configure QR code properties
            qrGenerator.Parameters.Barcode.QR.CodeText = "https://www.aspose.com";
            qrGenerator.Parameters.Barcode.QR.ErrorLevel = QRErrorLevelLevel.High;
            qrGenerator.Parameters.Barcode.QR.ModuleSize = 5;
            qrGenerator.Parameters.Barcode.XDimension.Pixels = 2;

            // Step 3: Customize colors
            qrGenerator.Parameters.Barcode.ForegroundColor = Color.Black;
            qrGenerator.Parameters.Barcode.BackgroundColor = Color.White;

            // Step 4: Generate and save the QR code as an image
            using (var image = qrGenerator.GenerateBarCodeImage())
            {
                image.Save("CustomQRCode.png");
                Console.WriteLine("QR Code generated successfully!");
            }
        }
    }
}

步骤一步(地图为示例)

步骤1:启动QR发电机

创建一个发电机与 EncodeTypes.QR 和默认支付负载(URL、ID等)。

var qrGenerator = new BarcodeGenerator(EncodeTypes.QR, "https://www.aspose.com");

您可以通过制造商或 Parameters.Barcode.QR.CodeText例如,这两者都是明确的。

步骤2:设置核心QR属性

  • 代码文本:在QR中编码的实际数据。
  • 错误纠正:控制耐用性(例如,漏洞,代码上的标志)。
  • ** 模块/细胞尺寸**:每个方形“模型”的大小。
qrGenerator.Parameters.Barcode.QR.CodeText = "https://www.aspose.com";
qrGenerator.Parameters.Barcode.QR.ErrorLevel = QRErrorLevelLevel.High; // robust against damage
qrGenerator.Parameters.Barcode.QR.ModuleSize = 5;                       // pixels per module (visual density)
qrGenerator.Parameters.Barcode.XDimension.Pixels = 2;                   // base module thickness (kept to match gist)

** 注意:** 为QR,设置 QR.ModuleSize 通常是足够的,例子也说明了 XDimension.Pixels 镜子,如果你只是一个,最好是 QR.ModuleSize 可预测的视觉扩展。

步骤3:应用品牌颜色(前面/背景)

qrGenerator.Parameters.Barcode.ForegroundColor = Color.Black;
qrGenerator.Parameters.Barcode.BackgroundColor = Color.White;

为了最大限度的扫描可靠性,确保适当的对比. 如果你转换颜色或放置忙碌的背景,添加一个慷慨的安静区(边缘)。

步骤4:Render & Save

生成 A System.Drawing.Image 以 PNG (sharp, lossless) 為保護。

using (var image = qrGenerator.GenerateBarCodeImage())
{
    image.Save("CustomQRCode.png");
}

可选改进

(一)出口到多格式

using System.Drawing.Imaging;

// After GenerateBarCodeImage():
image.Save("CustomQRCode.jpg", ImageFormat.Jpeg);  // for photos/CMYK workflows
image.Save("CustomQRCode.bmp", ImageFormat.Bmp);   // uncompressed (big files)

二、提高印刷阅读率

    • 升高*:上升 QR.ModuleSize (例如,6-10)用于物理印刷。
  • Quiet zone:确保代码周围有足够的白色空间;如果您的配置工具太接近,则将粘贴添加到图像中。
  • 高错误纠正:保持 High 如果在纺织表面上放置小标志或打印。

二、包装付费变量

    • 应用链接*: myapp://open?id=12345
  • • Wi-Fi 配置: WIFI:T:WPA;S:MySSID;P:MyPassword;H:false;
  • ◎vCard*: BEGIN:VCARD\nVERSION:3.0\nN:…\nEND:VCARD

Troubleshooting

  • ** 扫描仪不会阅读**:增加对比(黑暗的前面,光线背景),成长 ModuleSize,并确保一个干净的安静区域。
  • Blurry 小尺寸: 避免 JPEG 小代码; 偏好 PNG 和更大的模块。
  • Logo overlay:保持小而集中;依靠 High 错误纠正要补偿。

最佳实践

  • ** 内容验证**:在插入之前确认URL/ID,以避免印刷中的固定QR代码。
  • 版本控制:保持代码(或配置)中的发电机设置,并将其承诺 - 重复输出物质在品牌中。
  • ** 环境平等**:如果您在 CI 上投票,请使用相同的 DPI / 字符串,以避免微妙的拉斯特差异。

结论

使用 Aspose.BarCode for .NET,您可以创建的QR代码不仅是 robust(通过错误纠正),而且也是 on-brand (通过尺寸和颜色控制)。 ModuleSize,错误纠正,和颜色适合您的交付媒体 - 屏幕,标签,或板块。

高级自定义功能

1. 添加 Logo 或图标

Aspose.BarCode 允许在 QR 码中心嵌入自定义图片。通过 QrCodeLogo 类可以指定 Logo 的路径、尺寸以及透明度。示例代码如下:

var logo = new QrCodeLogo("logo.png")
{
    LogoSizePercent = 15, // Logo 占 QR 码整体面积的百分比
    Transparency = 0.2f   // 20% 透明度,防止遮挡太多模块
};
qrGenerator.Parameters.Barcode.QR.QrCodeLogo = logo;

在高错误纠正级别(如 High)下,即使覆盖了部分模块,扫描器仍能成功解码。适用于品牌化的营销材料或产品包装。

2. 动态生成 QR 码的 Web API 示例

在实际项目中,往往需要通过 HTTP 接口实时生成 QR 码。下面给出一个基于 ASP.NET Core 的最小示例,返回 PNG 流:

[ApiController]
[Route("api/qrcode")]
public class QrCodeController : ControllerBase
{
    [HttpGet]
    public IActionResult Get([FromQuery] string data)
    {
        var generator = new BarcodeGenerator(EncodeTypes.QR, data);
        generator.Parameters.Barcode.QR.ErrorLevel = QRErrorLevelLevel.High;
        generator.Parameters.Barcode.QR.ModuleSize = 6;
        using var img = generator.GenerateBarCodeImage();
        var ms = new MemoryStream();
        img.Save(ms, ImageFormat.Png);
        ms.Seek(0, SeekOrigin.Begin);
        return File(ms.ToArray(), "image/png");
    }
}

前端只需请求 api/qrcode?data=https://example.com 即可获得即时可用的二维码图片,适合订单确认页、电子票据等场景。

3. 支持多种编码模式

除了标准的 URL、文本外,Aspose.BarCode 还能直接生成 Wi‑Fi、联系人(vCard)以及加密信息的 QR 码。只需把对应格式的字符串交给 CodeText,库会自动识别并设置合适的模式。例如:

string wifi = "WIFI:T:WPA;S:MyNetwork;P:SecretPwd;;";
qrGenerator.Parameters.Barcode.QR.CodeText = wifi;

这样生成的二维码扫描后会直接弹出 Wi‑Fi 连接界面,提升用户体验。

常见问题解答

Q1:为什么在高分辨率打印时出现模糊?

  • 确保 ModuleSize 足够大(建议 ≥ 8 像素),并使用无损格式(PNG、TIFF)。若使用 JPEG,请关闭压缩或选择质量 100。

Q2:Logo 覆盖导致扫描失败怎么办?

  • 提升错误纠正级别至 HighVeryHigh,并将 Logo 大小控制在 QR 码面积的 15% 以下。

Q3:如何在 .NET 6 环境下使用 System.Drawing.Common?

  • 在非 Windows 环境需要添加对 runtime.win‑x64.microsoft.visualc++ 的依赖,或者改用 SkiaSharp 作为渲染后端,Aspose.BarCode 已提供对应的适配器。

Q4:二维码的版本(Version 1‑40)能否手动指定?

  • 可以通过 qrGenerator.Parameters.Barcode.QR.Version 属性设置具体版本,若不指定则库会自动根据数据长度选择最小可容纳的版本。

Q5:如何批量生成并保存到磁盘?

  • 使用循环遍历数据集合,调用 GenerateBarCodeImage() 并通过 Save(Path.Combine(folder, $"qr_{i}.png")) 保存即可。配合 Parallel.ForEach 可显著提升生成速度。

通过上述高级技巧,您可以在不同业务场景下快速交付高质量、品牌化的 QR 码。

More in this category