Aspose.BarCode 是一个强大的图书馆,在 .NET 应用程序中简化条形码的生成、识别和操作,本文专注于将 1D Barcode 阅读器组成部分的整合到您的项目中.

安装

在进入实施细节之前,请确保您在 .NET 应用程序中安装了使用 Aspose.BarCode 所需的组件,您可以通过 NuGet Package Manager 或直接从官方网站下载包.

使用 NuGet Package Manager

若要通过 NuGet 将 Aspose.BarCode 添加到您的项目中,请遵循以下步骤:

  • 打开 Visual Studio 并导航到您的项目.
  • 在 Solution Explorer 中右键单击项目,然后选择“管理 NuGet 包".
  • 寻找 Aspose.BarCode 然后安装它.

您可以使用 Package Manager Console 以以下命令:

Install-Package Aspose.BarCode

手动安装

如果您更愿意手动下载包:

  • 参观 The 官方网站 到 Aspose.BarCode.
  • 下载并提取包文件.
  • 通过包含所需的 DLL 添加参考到您的项目.

建立许可证

要解锁完整的功能,您需要设置许可钥匙. 这一步是至关重要的,因为它确保您正在使用Aspose.BarCode的授权版本.

步骤设置许可证

  • 在购买或订阅试验后,从 Aspose 网站获取产品密钥.
  • 创建 A Aspose.BarCode.Metered 对象并设置您的许可密钥:
 // set metered public and private keys
 Aspose.BarCode.Metered metered = new Aspose.BarCode.Metered();
 // Access the setMeteredKey property and pass the public and private keys as parameters
 metered.SetMeteredKey("*****", "*****");

引用图书馆

一旦您已安装并许可 Aspose.BarCode,您需要在项目中引用它 using 在您的 C# 文件的顶部:

using Aspose.BarCode;

您可以使用图书馆提供的课程和方法.

安装 Barcode Reader

要从图像中阅读条形码,您需要立即 BarCodeReader 这个对象负责在图像或文件中识别条形码.

例:从 PNG 阅读条形码

下面是如何创建一个新的例子 BarCodeReader:

using (var reader = new Aspose.BarCode.Regeneration.BarCodeReader("path/to/barcode.png", DecodeTypes.AllSupportedTypes))
{
    while (reader.Read())
    {
        Console.WriteLine($"Type: {reader.Type}");
        Console.WriteLine($"Text: {reader.Text}");
    }
}

先进的条形码阅读

对于阅读过程的更多控制,您可以指定符号类型和其他设置:

using (var reader = new Aspose.BarCode.Regeneration.BarCodeReader("path/to/barcode.png", DecodeTypes.Code128))
{
    while (reader.Read())
    {
        Console.WriteLine($"Type: {reader.Type}");
        Console.WriteLine($"Text: {reader.Text}");
    }
}

最佳实践

错误处理

总是包含错误处理以慈善管理例外:

try
{
    using (var reader = new Aspose.BarCode.Regeneration.BarCodeReader("path/to/barcode.png", DecodeTypes.AllSupportedTypes))
    {
        while (reader.Read())
        {
            Console.WriteLine($"Type: {reader.Type}");
            Console.WriteLine($"Text: {reader.Text}");
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine($"Error reading barcode: {ex.Message}");
}

结论

将 Aspose.BarCode 集成到您的 .NET 应用程序中,为处理 1D 条形码提供了坚实的解决方案. 通过遵循本文中列出的步骤,您可以以最小的努力有效地从图像中阅读和处理字符码.

有关详细信息或先进功能,请参阅官方文件: Aspose.BarCode KB 文章

性能优化

读取大量条码的批处理

在需要一次性处理上千张图片时,逐张创建 BarCodeReader 实例会导致大量的 GC 开销。可以使用 Parallel.ForEach 并配合 BarcodeReaderReadMultiple 方法一次性读取同一文件夹中的所有图片:

var files = Directory.GetFiles(@"C:\Barcodes", "*.png");
Parallel.ForEach(files, file =>
{
    using var reader = new Aspose.BarCode.Regeneration.BarCodeReader(file, DecodeTypes.AllSupportedTypes);
    while (reader.Read())
    {
        // 这里可以把结果写入数据库或集合
        Console.WriteLine($"{Path.GetFileName(file)} - {reader.Type}: {reader.Text}");
    }
});

该方式利用多核 CPU,显著提升吞吐量,同时保持每个 BarCodeReader 实例的短生命周期,避免内存泄漏。

缓存 DLL 加载

在高并发的 Web API 场景下,首次调用会触发 Aspose.BarCode 的内部资源初始化。建议在应用启动时预热一次:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 预热 Aspose.BarCode
    using var dummy = new Aspose.BarCode.BarCodeGenerator(EncodeTypes.Code128, "INIT");
    dummy.Save("dummy.png");
    // 其余中间件配置
    app.UseRouting();
    // ...
}

这样可以把首次加载的延迟转移到启动阶段,避免用户请求时出现卡顿。

常见问题解答

我可以在 .NET Core 或 .NET 5/6/7 中使用吗?

可以。Aspose.BarCode 提供了针对 .NET Standard 2.0 的程序集,因此在 .NET Core、.NET 5 及以上版本都可以直接引用 NuGet 包而无需额外配置。

如何读取带有噪声或低对比度的条码?

使用 BarCodeReaderReadBarcodeImage 重载并开启 EnableHardDection 选项可以提升对模糊条码的识别率:

var options = new ReaderParameters { EnableHardDection = true };
using var reader = new Aspose.BarCode.Regeneration.BarCodeReader("noisy.png", DecodeTypes.AllSupportedTypes, options);

此外,可以在读取前使用 ImageProcessor 对图像做二值化或对比度增强,效果更佳。

是否支持一次读取多种 1D 条码类型?

DecodeTypes.AllSupportedTypes 已经包含了所有常见的 1D 条码(Code128、Code39、EAN13、UPC-A 等),如果只想限定几种,可以使用位运算组合:

var types = DecodeTypes.Code128 | DecodeTypes.EAN13 | DecodeTypes.UPCA;
using var reader = new Aspose.BarCode.Regeneration.BarCodeReader("mixed.png", types);

许可证失效后会有什么表现?

如果许可证未正确设置或已过期,库会在运行时抛出 LicenseException 并限制功能 (例如只能生成水印版条码)。因此在生产环境务必在程序入口处提前验证许可证:

try
{
    var metered = new Aspose.BarCode.Metered();
    metered.SetMeteredKey("publicKey", "privateKey");
}
catch (LicenseException ex)
{
    // 记录并通知管理员
    Log.Error(ex);
}

通过上述 FAQ,可以快速定位并解决在实际项目中常见的使用障碍。

More in this category