跳至页脚内容
USING IRONBARCODE

C# 从字符串生成 BarCode:使用 IronBarcode 的完整教程

将字符串数据编码为条形码图像是库存系统、零售应用程序和文档管理的基本要求。 本教程演示了如何使用IronBarcode从C#中的字符串值生成条形码——涵盖从安装到以多种格式保存条形码图像、为生产使用进行样式设置以及处理来自数据库数据的大批量数据的一切。

IronBarcode是由Iron Software开发的.NET库,它简化了为Windows应用程序、Web服务和云托管API构建的.NET开发人员的条形码生成和读取。开始您的免费试用以配合以下代码示例。

如何在.NET项目中安装IronBarcode?

使用.NET CLI或Visual Studio中的NuGet包管理器安装IronBarcode仅需几秒钟。

选项1——.NET CLI(推荐用于.NET 10):

dotnet add package Barcode
dotnet add package Barcode
SHELL

选项2——Visual Studio中的NuGet包管理器控制台:

Install-Package BarCode

或者,在NuGet包管理器GUI中搜索"IronBarCode"并安装官方包。 该库目标.NET Framework 4.6.2+.NET 5到.NET 10,确保与现代.NET工作负载兼容。

安装后,在每个生成或读取条形码的文件顶部添加一个using指令:

using IronBarCode;
using IronBarCode;
$vbLabelText   $csharpLabel

该指令公开了BarcodeEncoding以及本指南中涵盖的其他公共类型。

如何在C#中从字符串生成一个简单的条形码?

BarcodeWriter.CreateBarcode方法是条形码生成的入口。 传入您想要编码的字符串以及一个GeneratedBarcode对象,准备好进行保存或进一步操作。

using IronBarCode;

// Generate a Code 128 barcode from a product SKU string
string productCode = "SKU-78432-A";
var barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128);
barcode.SaveAsPng("product_barcode.png");
using IronBarCode;

// Generate a Code 128 barcode from a product SKU string
string productCode = "SKU-78432-A";
var barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128);
barcode.SaveAsPng("product_barcode.png");
$vbLabelText   $csharpLabel

Barcode 生成输出

C#生成字符串条形码:使用IronBarcode的完整教程:图片1 - 示例输出条形码

这将从产品字符串创建一个Code128条形码图像,并将其保存为PNG文件。CreateBarcode方法处理所有编码复杂性,因此可以用最少的代码生成一个条形码图像。 IronBarcode支持保存为PNG、JPEG、GIF、TIFF、BMP和SVG格式

该方法还接收可选的宽度和高度参数以控制输出尺寸,帮助确保在目标环境中获得适当的扫描质量:

using IronBarCode;

// Specify width and height in pixels for the barcode image
string productCode = "SKU-78432-A";
var barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128, 400, 120);
barcode.SaveAsPng("product_barcode_sized.png");
using IronBarCode;

// Specify width and height in pixels for the barcode image
string productCode = "SKU-78432-A";
var barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128, 400, 120);
barcode.SaveAsPng("product_barcode_sized.png");
$vbLabelText   $csharpLabel

设置明确的尺寸在为热敏标签打印机生成标签时特别有用,因为输出尺寸必须与标签纸张完全匹配。

IronBarcode 支持哪些条码格式?

IronBarcode支持20多种条形码类型以适应不同的使用场景。 选择正确的格式可确保适当的扫描和足够的数据容量以满足应用需求。

using IronBarCode;

string url = "https://ironsoftware.com/csharp/barcode/";
string numericId = "0123456789012";

// QR Code -- best for URLs, text data, and mobile scanning
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode)
    .SaveAsPng("qrcode.png");

// UPC-A -- required for retail point-of-sale systems (12 digits)
BarcodeWriter.CreateBarcode(numericId, BarcodeEncoding.UPCA)
    .SaveAsPng("upc_barcode.png");

// PDF417 -- suited for documents that need higher data capacity
BarcodeWriter.CreateBarcode("Extended product details here", BarcodeEncoding.PDF417)
    .SaveAsJpeg("pdf417_barcode.jpeg");
using IronBarCode;

string url = "https://ironsoftware.com/csharp/barcode/";
string numericId = "0123456789012";

// QR Code -- best for URLs, text data, and mobile scanning
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode)
    .SaveAsPng("qrcode.png");

// UPC-A -- required for retail point-of-sale systems (12 digits)
BarcodeWriter.CreateBarcode(numericId, BarcodeEncoding.UPCA)
    .SaveAsPng("upc_barcode.png");

// PDF417 -- suited for documents that need higher data capacity
BarcodeWriter.CreateBarcode("Extended product details here", BarcodeEncoding.PDF417)
    .SaveAsJpeg("pdf417_barcode.jpeg");
$vbLabelText   $csharpLabel

Barcode 图像输出

C#生成字符串条形码:使用IronBarcode的完整教程:图片2 - 生成的条形码

下表总结了何时使用每种主要格式:

IronBarcode支持的按使用场景分的条形码格式
翻译格式最适合字符集
`QRCode`URLs、文本、移动扫描ASCII + Unicode
`Code128`字母数字产品代码、运输标签完整ASCII
`UPCA` / `EAN13`零售销售点系统仅限数字
`PDF417`身份证卡、登机牌、文件二进制数据
`DataMatrix`小标签、电子产品ASCII + 二进制
`Aztec`交通票、移动登机ASCII + Unicode

有关支持的完整编码列表,请访问IronBarcode条形码类型参考

如何在C#中自定义和样式化条形码图像?

除了基本的条形码生成,IronBarcode还提供了一种流式样式API,用于调整颜色、添加注释以及在没有任何外部图像处理库的情况下调整条形码图像大小。

using IronBarCode;
using IronSoftware.Drawing;

string orderNumber = "ORD-2024-00542";
var styledBarcode = BarcodeWriter.CreateBarcode(orderNumber, BarcodeEncoding.Code128);

// Adjust colors to match brand identity
styledBarcode.ChangeBarCodeColor(Color.DarkBlue);
styledBarcode.ChangeBackgroundColor(Color.White);

// Add readable text annotations above and below the bars
styledBarcode.AddAnnotationTextAboveBarcode("Order Number", new Font("Arial", 12), Color.Black, 5);
styledBarcode.AddBarcodeValueTextBelowBarcode(new Font("Arial", 10), Color.Gray, 5);

// Resize to fit a thermal label at 400 x 150 pixels
styledBarcode.ResizeTo(400, 150);
styledBarcode.SaveAsPng("styled_order_barcode.png");
using IronBarCode;
using IronSoftware.Drawing;

string orderNumber = "ORD-2024-00542";
var styledBarcode = BarcodeWriter.CreateBarcode(orderNumber, BarcodeEncoding.Code128);

// Adjust colors to match brand identity
styledBarcode.ChangeBarCodeColor(Color.DarkBlue);
styledBarcode.ChangeBackgroundColor(Color.White);

// Add readable text annotations above and below the bars
styledBarcode.AddAnnotationTextAboveBarcode("Order Number", new Font("Arial", 12), Color.Black, 5);
styledBarcode.AddBarcodeValueTextBelowBarcode(new Font("Arial", 10), Color.Gray, 5);

// Resize to fit a thermal label at 400 x 150 pixels
styledBarcode.ResizeTo(400, 150);
styledBarcode.SaveAsPng("styled_order_barcode.png");
$vbLabelText   $csharpLabel

风格化条形码输出

C#生成字符串条形码:使用IronBarcode的完整教程:图片3 - 样式化条形码

有哪些样式属性可用?

GeneratedBarcode类公开了几类样式方法:

  • 颜色控制——IronSoftware.Drawing
  • 文本注释——使用自定义字体、大小和颜色在条形码上方或下方添加文本
  • 边距控制——设置条形码周围的填充以改善在杂乱标签上的扫描器性能
  • 旋转——为需要纵向标签布局的情况下,将条形码图像侧向或对角旋转
  • 调整大小——在不变形编码数据的情况下修复像素的宽度和高度

样式方法自然地串联在一起,保持代码的可读性,同时生成符合应用视觉设计的条形码图像。 有关更深入的演练,请参阅条形码样式指南

如何从数据库数据生成多个条形码?

现实世界的应用通常需要为物品集合生成条形码——产品目录、库存补充运行或订单派送工作流。 IronBarcode在不进行任何额外配置的情况下处理批量处理。

using IronBarCode;

// Data sourced from a database query result
List<string> productIds =
[
    "PROD-001-X",
    "PROD-002-Y",
    "PROD-003-Z",
    "PROD-004-W"
];

// Generate one barcode image per product ID
foreach (string productId in productIds)
{
    var barcode = BarcodeWriter.CreateBarcode(productId, BarcodeEncoding.Code128, 300, 100);
    barcode.SaveAsPng($"barcodes/{productId}.png");
}
using IronBarCode;

// Data sourced from a database query result
List<string> productIds =
[
    "PROD-001-X",
    "PROD-002-Y",
    "PROD-003-Z",
    "PROD-004-W"
];

// Generate one barcode image per product ID
foreach (string productId in productIds)
{
    var barcode = BarcodeWriter.CreateBarcode(productId, BarcodeEncoding.Code128, 300, 100);
    barcode.SaveAsPng($"barcodes/{productId}.png");
}
$vbLabelText   $csharpLabel

输出条形码

C#生成字符串条形码:使用IronBarcode的完整教程:图片4 - 多个生成的条形码

扩展到高容量

上述循环模式扩展到数千条记录无需修改。 对于大批量条形码生成,IronBarcode支持异步和多线程操作以最大限度地利用多核服务器的吞吐量。

生成的条形码图像可以嵌入到PDF报告中、打印在标签上或存储在文档管理系统中。 每个图像在条形码扫描器解码回文本之前,将原始字符串编码为二进制模式。

对于每次运行生成数千个条形码的生产批处理作业,请考虑在循环开始之前预热IronBarcode引擎。 对CreateBarcode的首次调用会初始化内部编码缓存; 同一进程内的后续调用因此会更快完成。 将整个批处理封装在一个计时方法中也使记录汇总统计变得简单——总生成条形码数量、所有编码失败和经过时间——然后批处理终止。 该模式与Hangfire之类的背景作业框架以及 .NET 内置的 IHostedService 集成顺利进行,用于定时生成任务。

如何以不同的文件格式保存和导出条形码?

GeneratedBarcode 提供了一系列保存方法,涵盖了商业应用中使用的最常见图像格式:

using IronBarCode;

string value = "EXPORT-TEST-001";
var barcode = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128, 400, 120);

// Save to disk in multiple formats
barcode.SaveAsPng("barcode.png");       // Lossless -- best for print
barcode.SaveAsJpeg("barcode.jpg");      // Compressed -- smaller file size
barcode.SaveAsGif("barcode.gif");       // Compatible with legacy systems
barcode.SaveAsTiff("barcode.tiff");     // Multi-page archival format
barcode.SaveAsBmp("barcode.bmp");       // Uncompressed bitmap

// Export as a byte array for in-memory operations (API responses, database storage)
byte[] pngBytes = barcode.ToStream(Image翻译格式.Png).ToArray();
using IronBarCode;

string value = "EXPORT-TEST-001";
var barcode = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128, 400, 120);

// Save to disk in multiple formats
barcode.SaveAsPng("barcode.png");       // Lossless -- best for print
barcode.SaveAsJpeg("barcode.jpg");      // Compressed -- smaller file size
barcode.SaveAsGif("barcode.gif");       // Compatible with legacy systems
barcode.SaveAsTiff("barcode.tiff");     // Multi-page archival format
barcode.SaveAsBmp("barcode.bmp");       // Uncompressed bitmap

// Export as a byte array for in-memory operations (API responses, database storage)
byte[] pngBytes = barcode.ToStream(Image翻译格式.Png).ToArray();
$vbLabelText   $csharpLabel

选择正确的格式取决于下游消费者。 PNG非常适合用于待打印标签和文件。 JPEG适用于存储大小受到限制的应用。 对于直接嵌入PDF文件中的条形码,IronBarcode与IronPDF集成,可编程地标记或插入条形码图像。

ToStream 重载在 Web API 和不希望写入磁盘的云函数中特别有价值。 字节数组可以存储在数据库BLOB列中、上传到云存储或直接流到HTTP响应中,而不需要文件系统上的任何中间文件。

如何在编码之前验证字符串数据?

并非每个字符串都对每种条形码格式有效。 UPC-A要求恰好12个数字数字,EAN-13要求13个数字,并且某些1D格式拒绝ASCII子集以外的字符。 将无效数据传给IronBarCodeEncodingException。 在生产环境中,将调用封装在try/catch块中,并预先验证输入以防止未处理的异常。

using IronBarCode;

bool TryCreateBarcode(string value, BarcodeEncoding encoding, string outputPath)
{
    if (string.IsNullOrWhiteSpace(value))
    {
        Console.WriteLine("Value must not be empty.");
        return false;
    }

    try
    {
        var barcode = BarcodeWriter.CreateBarcode(value, encoding);
        barcode.SaveAsPng(outputPath);
        return true;
    }
    catch (IronBarCodeEncodingException ex)
    {
        Console.WriteLine($"Encoding failed: {ex.Message}");
        return false;
    }
}

// Usage
TryCreateBarcode("SKU-001", BarcodeEncoding.Code128, "output.png");   // succeeds
TryCreateBarcode("NOT-NUMERIC", BarcodeEncoding.UPCA, "output.png");  // encoding exception
using IronBarCode;

bool TryCreateBarcode(string value, BarcodeEncoding encoding, string outputPath)
{
    if (string.IsNullOrWhiteSpace(value))
    {
        Console.WriteLine("Value must not be empty.");
        return false;
    }

    try
    {
        var barcode = BarcodeWriter.CreateBarcode(value, encoding);
        barcode.SaveAsPng(outputPath);
        return true;
    }
    catch (IronBarCodeEncodingException ex)
    {
        Console.WriteLine($"Encoding failed: {ex.Message}");
        return false;
    }
}

// Usage
TryCreateBarcode("SKU-001", BarcodeEncoding.Code128, "output.png");   // succeeds
TryCreateBarcode("NOT-NUMERIC", BarcodeEncoding.UPCA, "output.png");  // encoding exception
$vbLabelText   $csharpLabel

为输入数据选择正确的格式

当条形码格式在运行时可配置时,映射内容类型到合适编码的助手可以避免静默失败:

  • 当字符串包含URLs、电子邮件地址或多字节Unicode字符时,请使用BarcodeEncoding.QRCode
  • 对于通用字母数字字符串,长度最多大约80个字符,请使用BarcodeEncoding.Code128
  • 仅在数据为纯数字且长度固定时使用BarcodeEncoding.UPCA。 校验位由 IronBarcode 自动计算。
  • 对于必须放在物理较小标签上的非常短的字母数字字符串,请使用BarcodeEncoding.DataMatrix

在调用CreateBarcode前添加格式验证,保持错误信息面向用户而不是在应用日志中的晦涩堆栈踪迹。

如何从字符串值重新读取条形码?

在许多系统中,生成条形码仅仅是工作流程的一半。 条形码读取API使用BarcodeReader.Read将图像解码回原始字符串。

using IronBarCode;

// Read all barcodes from an image file
var results = BarcodeReader.Read("product_barcode.png");

foreach (var result in results)
{
    // Output the decoded string value
    Console.WriteLine($"Decoded value: {result.Value}");
    Console.WriteLine($"翻译格式 detected: {result.BarcodeType}");
}
using IronBarCode;

// Read all barcodes from an image file
var results = BarcodeReader.Read("product_barcode.png");

foreach (var result in results)
{
    // Output the decoded string value
    Console.WriteLine($"Decoded value: {result.Value}");
    Console.WriteLine($"翻译格式 detected: {result.BarcodeType}");
}
$vbLabelText   $csharpLabel

这使得构建回程条形码工作流程变得简单——从产品记录生成条形码,将其保存到磁盘或标签打印机队列,然后稍后扫描实际标签并将值解码回以查找记录。 对于从PDF文件或< live camera feeds 读取条形码,IronBarcode提供了相同简单API的专用方法。

如何在ASP.NET Core Web API中使用IronBarcode?

IronBarcode在ASP.NET Core控制器和最小API处理程序中工作。 最常见的模式是返回条形码图像作为文件结果或base64编码的数据URI,以在浏览器中呈现。

using IronBarCode;
using Microsoft.AspNetCore.Mvc;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

// Minimal API endpoint -- returns a barcode PNG for the given value
app.MapGet("/barcode/{value}", (string value) =>
{
    var barcode = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128, 400, 120);
    byte[] imageBytes = barcode.ToStream(Image翻译格式.Png).ToArray();
    return Results.File(imageBytes, "image/png");
});

app.Run();
using IronBarCode;
using Microsoft.AspNetCore.Mvc;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

// Minimal API endpoint -- returns a barcode PNG for the given value
app.MapGet("/barcode/{value}", (string value) =>
{
    var barcode = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128, 400, 120);
    byte[] imageBytes = barcode.ToStream(Image翻译格式.Png).ToArray();
    return Results.File(imageBytes, "image/png");
});

app.Run();
$vbLabelText   $csharpLabel

该端点为URL路径中传递的任何值按需生成条形码。 对于生产部署,请添加缓存,以便对相同条形码值的重复请求不会重新生成图像。 有关更详细的演练,包括依赖注入和响应缓存,请参阅完整的ASP.NET条形码生成教程

您的下一步是什么?

使用IronBarcode从C#中的字符串数据生成条形码非常简单。 流利API处理条形码编码的复杂性,同时为自定义和批处理提供灵活性。 无论目标是简单的Code 128条形码用于库存还是QR代码用于移动应用,IronBarcode都为.NET应用程序提供可靠的条形码功能。

欲了解更多:

立即开始使用 IronBarcode。
green arrow pointer

常见问题解答

如何在 C# 中安装IronBarcode以生成条形码?

从.NET CLI 运行“dotnet add package Barcode”,或者在 Visual Studio 中打开NuGet包管理器,搜索“IronBarcode”,然后安装官方包。

使用IronBarcode可以根据字符串生成哪些条形码格式?

IronBarcode支持 20 多种格式,包括 QR 码、Code 128、UPC-A、EAN-13、PDF417、Data Matrix 和 Aztec。格式通过 BarcodeEncoding 枚举指定。

使用IronBarcode生成的条形码外观可以自定义吗?

是的。IronBarcode 提供了更改条形码颜色、背景颜色、在条形码上方或下方添加文本注释、设置边距、调整大小和旋转输出图像的方法。

IronBarcode是否支持批量条码生成?

是的。遍历列表或数据库结果集,并对每个值调用 `BarcodeWriter.CreateBarcode`。对于非常大的数据量, IronBarcode还支持异步和多线程操作。

IronBarcode可以将条形码保存为哪些图像格式?

IronBarcode可以将条形码保存为 PNG、JPEG、GIF、TIFF、BMP 和 SVG 格式。ToStream 方法返回一个字节数组,用于内存存储,无需写入磁盘。

如何使用IronBarcode将字符串编码成条形码?

调用 `BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)`,其中 `value` 是字符串,`BarcodeEncoding` 指定格式。然后对返回的 `GeneratedBarcode` 对象调用 `SaveAsPng` 或其他保存方法。

IronBarcode支持哪些.NET版本?

IronBarcode支持.NET Framework 4.6.2 及更高版本,以及.NET 5 至.NET 10,涵盖传统和现代.NET工作负载。

IronBarcode可以在ASP.NET Core Web 应用程序中使用吗?

是的。IronBarcode 可以在控制器和极简 API 处理程序中运行。常见的模式是调用 CreateBarcode,使用 ToStream 将IronBarcode转换为字节数组,然后从端点以文件形式返回。

如何在 C# 中将条形码还原为其原始字符串?

使用 BarcodeReader.Read(filePath) 方法解码图像。该方法返回一个 BarcodeResult 对象集合,每个对象包含解码后的 Value 字符串和检测到的 BarcodeType。

IronBarcode有免费试用版吗?

是的。IronBarcode 提供免费试用许可证,允许用户在购买付费许可证进行生产部署之前,全面评估所有功能。

Jordi Bardia
软件工程师
Jordi 最擅长 Python、C# 和 C++,当他不在 Iron Software 利用这些技能时,他就在游戏编程。分享产品测试、产品开发和研究的责任,Jordi 在持续的产品改进中增加了巨大的价值。多样的经验使他面临挑战并保持投入,他表示这是在 Iron Software 工作的最喜欢的方面之一。Jordi 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我