
C# 从字符串生成 BarCode:使用 IronBarcode 的完整教程
将字符串数据编码为条形码图像是库存系统、零售应用程序和文档管理的基本要求。 本教程演示了如何使用IronBarcode在 C# 中从字符串值生成条形码——涵盖了从安装到以多种格式保存条形码图像、为生产用途设置样式以及处理来自数据库数据的大批量数据等所有内容。
IronBarcode是由Iron Software开发的.NET库,旨在简化.NET开发人员构建 Windows 应用程序、Web 服务和云托管 API 时条形码的生成和读取。立即开始免费试用,并跟随以下代码示例进行学习。
如何在.NET项目中安装IronBarcode ?
使用.NET CLI 或 Visual Studio 中的NuGet包管理器安装IronBarcode只需几秒钟。
选项 1 -- .NET CLI(推荐用于.NET 10):
dotnet add package Barcode
选项 2 -- Visual Studio 中的NuGet包管理器控制台:
或者,在NuGet包管理器GUI中搜索"IronBarcode",并安装官方包。 该库面向.NET Framework 4.6.2+和.NET 5 至.NET 10 ,确保与现代.NET工作负载兼容。
安装后,在每个生成或读取条形码的文件顶部添加一个 using 指令:
using IronBarCode;Imports IronBarCode该指令暴露 BarcodeEncoding,以及本指南中涵盖的其他公共类型。
如何在C#中从字符串生成简单条形码?
BarcodeWriter.CreateBarcode 方法是条形码生成的入口点。 传入您要编码的字符串以及一个 BarcodeEncoding 值,您将获得一个 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");Imports IronBarCode
' Generate a Code 128 barcode from a product SKU string
Dim productCode As String = "SKU-78432-A"
Dim barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128)
barcode.SaveAsPng("product_barcode.png")Barcode 生成输出

这将从产品字符串创建一个 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");Imports IronBarCode
' Specify width and height in pixels for the barcode image
Dim productCode As String = "SKU-78432-A"
Dim barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128, 400, 120)
barcode.SaveAsPng("product_barcode_sized.png")在为热敏标签打印机生成标签时,设置明确的尺寸尤其有用,因为输出尺寸必须与标签纸完全匹配。
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");Imports IronBarCode
Dim url As String = "https://ironsoftware.com/csharp/barcode/"
Dim numericId As String = "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")Barcode 图像输出

下表总结了每种主要格式的使用时间:
| 翻译格式 | 最适合 | 字符集 |
|---|---|---|
QRCode | URL、文本、移动扫描 | 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");Imports IronBarCode
Imports IronSoftware.Drawing
Dim orderNumber As String = "ORD-2024-00542"
Dim 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")风格化条形码输出

有哪些样式属性可用?
GeneratedBarcode 类暴露了几类样式方法:
- 颜色控制 --
ChangeBarCodeColor,ChangeBackgroundColor接受任何来源于Color的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");
}Imports IronBarCode
' Data sourced from a database query result
Dim productIds As New List(Of String) From {
"PROD-001-X",
"PROD-002-Y",
"PROD-003-Z",
"PROD-004-W"
}
' Generate one barcode image per product ID
For Each productId As String In productIds
Dim barcode = BarcodeWriter.CreateBarcode(productId, BarcodeEncoding.Code128, 300, 100)
barcode.SaveAsPng($"barcodes/{productId}.png")
Next输出条形码

扩展至高容量
上面的循环模式无需修改即可扩展到数千条记录。 对于大批量条码生成, 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();Imports IronBarCode
Dim value As String = "EXPORT-TEST-001"
Dim 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)
Dim pngBytes As Byte() = barcode.ToStream(ImageFormat.Png).ToArray()选择合适的格式取决于下游消费者。 PNG 格式非常适合用于打印标签和文档。 JPEG格式适用于存储空间受限的应用场景。 对于直接在PDF文档中嵌入条形码,IronBarcode与IronPDF集成以编程方式盖章或插入条形码图像。
ToStream 重载在 Web APIs 和云函数中尤其有用,因为它们不需要写入磁盘。 字节数组可以存储在数据库 BLOB 列中,上传到云存储,或者直接流式传输到 HTTP 响应,而无需在文件系统上有任何中间文件。
如何在编码前验证字符串数据?
并非每个字符串都适用于每种条形码格式。 UPC-A 需要 12 位数字,EAN-13 需要 13 位数字,而某些一维条码格式会拒绝 ASCII 子集之外的字符。 将无效数据传递给 CreateBarcode 会引发 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 exceptionImports IronBarCode
Function TryCreateBarcode(value As String, encoding As BarcodeEncoding, outputPath As String) As Boolean
If String.IsNullOrWhiteSpace(value) Then
Console.WriteLine("Value must not be empty.")
Return False
End If
Try
Dim barcode = BarcodeWriter.CreateBarcode(value, encoding)
barcode.SaveAsPng(outputPath)
Return True
Catch ex As IronBarCodeEncodingException
Console.WriteLine($"Encoding failed: {ex.Message}")
Return False
End Try
End Function
' Usage
TryCreateBarcode("SKU-001", BarcodeEncoding.Code128, "output.png") ' succeeds
TryCreateBarcode("NOT-NUMERIC", BarcodeEncoding.UPCA, "output.png") ' encoding exception选择合适的输入数据格式
当条形码格式可在运行时配置时,使用一个将内容类型映射到相应编码的辅助函数可以避免静默故障:
- 当字符串包含 URLs、电子邮件地址或多字节 Unicode 字符时,使用
BarcodeEncoding.QRCode。 - 对于大约80个字符的通用字母数字字符串,使用
BarcodeEncoding.Code128。 - 仅在数据为纯数字且长度固定时,使用
BarcodeEncoding.EAN13或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}");
}Imports IronBarCode
' Read all barcodes from an image file
Dim results = BarcodeReader.Read("product_barcode.png")
For Each result In results
' Output the decoded string value
Console.WriteLine($"Decoded value: {result.Value}")
Console.WriteLine($"翻译格式 detected: {result.BarcodeType}")
Next这样就可以轻松构建往返条形码工作流程——从产品记录生成条形码,将其保存到磁盘或标签打印机队列,然后扫描物理标签并解码值以查找记录。 对于从PDF文件读取条形码或实时相机馈送,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();Imports IronBarCode
Imports Microsoft.AspNetCore.Mvc
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
' Minimal API endpoint -- returns a barcode PNG for the given value
app.MapGet("/barcode/{value}", Function(value As String)
Dim barcode = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128, 400, 120)
Dim imageBytes As Byte() = barcode.ToStream(ImageFormat.Png).ToArray()
Return Results.File(imageBytes, "image/png")
End Function)
app.Run()该端点可根据 URL 路径中传递的任何值按需生成条形码。 对于生产环境部署,添加缓存,以便对同一条形码值重复请求时不会重新生成图像。 有关依赖注入和响应缓存等更详细的步骤,请参阅完整的ASP.NET条形码生成教程。
下一步计划是什么?
使用IronBarcode,在 C# 中从字符串数据生成条形码非常简单。 流畅的 API 能够处理条形码编码的复杂性,同时提供定制和批量处理的灵活性。 无论是用于库存的简单 Code 128 条形码,还是用于移动应用程序的二维码, IronBarcode都能为.NET应用程序提供可靠的条形码功能。
更进一步:
下载IronBarcode并本地运行本指南中的代码示例。 -购买用于生产环境部署的许可证——许可证均提供免费试用期。 -浏览文档以获取 API 参考、高级配置和平台特定说明 -探索涵盖二维码生成、条形码扫描、PDF集成等方面的代码示例
- ASP.NET条形码集成--在MVC视图和Razor页面中呈现条形码的完整指南
- 条形码扫描器集成-- 使用 C# 从图像、PDF 和 USB 扫描器读取条形码

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。
相关文章


