跳過到頁腳內容
使用IRONBARCODE

C# 從字串產生 BarCode:使用 IronBarcode 的完整教學

將字串數據編碼為條碼圖像是庫存系統、零售應用和文件管理的基本要求。 本教程演示如何使用IronBarcode從字串值生成條碼——涵蓋從安裝到以多種格式保存條碼圖像、為生產使用進行樣式化,以及從數據庫數據處理大型批次的全部內容。

IronBarcode是由Iron Software開發的.NET程式庫,簡化了為.NET開發人員在構建Windows應用、網路服務和雲端託管API時的條碼生成和讀取。開始您的免費試用來參考下面的代碼示例。

如何在.NET專案中安裝IronBarcode?

使用.NET CLI或Visual Studio中的NuGet Package Manager安裝IronBarcode只需幾秒鐘。

選項1 —— .NET CLI(推薦用於.NET 10):

dotnet add package Barcode
dotnet add package Barcode
SHELL

選項2 —— Visual Studio中的NuGet Package Manager控制台:

Install-Package BarCode

或者,在NuGet Package Manager 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

條碼生成輸出

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

條碼圖像輸出

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類別公開了幾種樣式方法類別:

  • 顏色控制——Color
  • 文本註解——使用自定義字體、大小和顏色在條碼上方或下方添加文本
  • 邊距控制——設置條碼周圍的內邊距,以提高掃描儀在雜亂標籤上的性能
  • 旋轉——將條碼圖像側向或對角旋轉以適應需要豎向佈局的標籤佈局
  • 調整大小——在不失真編碼數據的情況下修正寬度和高度像素

樣式方法自然鏈接在一起,保持代碼可讀,同時生成符合應用程序視覺設計的條碼圖像。 欲獲得更深入的介紹,請參見條碼樣式化指南

如何從數據庫數據生成多個條碼?

現實世界應用程序經常需要為集合項目生成條碼——例如產品目錄、庫存補貨運行或訂單發送工作流程。 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位,一些一維格式拒絕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文件實時攝像頭中讀取條碼,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、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網頁應用嗎?

可以。IronBarcode可以在控制器和最小API處理器中使用。一個常見的模式是調用CreateBarcode,將結果轉換為字節陣列並使用ToStream,然後將其作為文件結果從端點返回。

如何在C#中將條碼讀回其原始字串?

使用BarcodeReader.Read(filePath)解碼影像。此方法返回一個BarcodeResult對象集合,每個對象包含解碼后的Value字串和檢測到的BarcodeType。

IronBarcode有試用版嗎?

有的。IronBarcode提供免費試用授權,允許在承諾付費授權進行生產部署之前完全評估所有功能。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我