如何在 C# 中將條碼匯出為串流
IronBarcode可讓您產生條碼並將其直接轉換為 MemoryStream 對象,而無需檔案 I/O,從而提高效能和安全性。 這種簡化的方法消除了磁碟操作,並實現了與應用程式的無縫整合。 無論是建立 Web API、處理批量操作,還是與雲端服務集成,基於流的條碼生成都能提供現代應用程式所需的靈活性和效率。
快速入門:立即將條碼匯出至串流
使用IronBarcode產生條碼,並用一行程式碼將其直接轉換為 MemoryStream。 無需檔案系統。
最簡工作流程(5個步驟)
- 下載 C# 庫以將條碼匯出為串流
- 根據輸入值建立各種條碼類型
- 將產生的條碼轉換為串流
- 使用特定方法將不同影像格式匯出為串流。
- 對流資料進行進一步處理
如何將條碼匯出為資料流?
建立具有所需值的條碼後,使用 ToStream 方法將產生的條碼轉換為 MemoryStream。 預設格式為PNG。 即使在套用自訂樣式之後,此功能也適用於 QRCodeWriter。 有關所有可用方法的完整文檔,請參閱API 參考。
導出條碼流範例
:path=/static-assets/barcode/content-code-examples/how-to/create-barcode-as-stream-to-stream.cs
using IronBarCode;
using System.IO;
// Create one-dimensional barcode
GeneratedBarcode barcode = BarcodeWriter.CreateBarcode("IronBarcode1234", BarcodeEncoding.Code128);
// Convert barcode to stream
Stream barcodeStream = barcode.ToStream();
// Create QR code
GeneratedBarcode qrCode = QRCodeWriter.CreateQrCode("IronBarcode1234");
// Convert QR code to stream
Stream qrCodeStream = qrCode.ToStream();
Imports IronBarCode
Imports System.IO
' Create one-dimensional barcode
Dim barcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("IronBarcode1234", BarcodeEncoding.Code128)
' Convert barcode to stream
Dim barcodeStream As Stream = barcode.ToStream()
' Create QR code
Dim qrCode As GeneratedBarcode = QRCodeWriter.CreateQrCode("IronBarcode1234")
' Convert QR code to stream
Dim qrCodeStream As Stream = qrCode.ToStream()
為什麼使用流而不是文件?
使用流可以消除對檔案系統的依賴,並提供記憶體處理,從而獲得更好的效能。 這種方法非常適合 Web 應用程式、API 以及臨時檔案建立受到限製或不希望建立的場景。 基於流的處理有以下幾個優點:
-增強安全性:磁碟上不會有可能洩露敏感資料的臨時文件 -更佳效能:直接記憶體操作比磁碟 I/O 更快 -雲端相容性:可在容器化和無伺服器環境中無縫運行 -資源效率:減少磁碟空間使用和檔案系統開銷
何時應該使用 MemoryStream 處理條碼?
當您需要在記憶體中處理條碼、直接將其發送到 HTTP 回應或與其他基於流的 API 整合而不建立臨時檔案時,請使用 MemoryStream。 常見場景包括:
- Web API 回應:直接在 HTTP 回應中傳回條碼,無需儲存到磁碟。 -資料庫儲存:將條碼資料以二進位資料塊的形式儲存在資料庫中 -電子郵件附件:即時產生條碼並將其附加到電子郵件中 -雲端儲存:直接上傳到 Azure Blob 儲存體、AWS S3 或類似服務 -即時處理:產生條碼以供立即使用,無需持久保存
我可以將哪些圖像格式匯出到串流媒體?
IronBarcode支援多種資料流匯出格式。 有幾種方法可以將條碼物件轉換為 MemoryStream。 這些方法簡化了流程,您可以根據所需的圖像格式進行選擇。 可用方法包括:
| 方法 | 格式 | 描述 |
|---|---|---|
| BinaryStream屬性 | 點陣圖 | 傳回以點陣圖影像形式渲染的條碼的 System.IO.Stream 值 |
ToGifStream() |
GIF | GIF影像格式 |
ToJpegStream() |
JPEG/JPG | JPEG/JPG影像格式 |
ToPdfStream() |
PDF文件格式 | |
ToPngStream() |
PNG | PNG影像格式 |
ToStream() |
PNG(預設) | 預設使用PNG圖像格式。 接受AnyBitmap.ImageFormat枚舉欄位作為參數,以指定所需的格式 |
ToTiffStream() |
多倫多國際電影節 | TIFF影像格式 |
將條碼以流的形式匯出為各種圖像格式
使用 ToJpegStream 和 ToStream 方法以 JPEG 影像格式輸出流:
:path=/static-assets/barcode/content-code-examples/how-to/create-barcode-as-stream-to-jpeg-stream.cs
using IronBarCode;
using IronSoftware.Drawing;
using System.IO;
// Create one-dimensional barcode
GeneratedBarcode barcode = BarcodeWriter.CreateBarcode("IronBarcode1234", BarcodeEncoding.Code128);
// Convert barcode to JPEG stream
Stream barcodeStream = barcode.ToStream(AnyBitmap.ImageFormat.Jpeg);
// Create QR code
GeneratedBarcode qrCode = QRCodeWriter.CreateQrCode("IronBarcode1234");
// Convert QR code to JPEG stream
Stream qrCodeStream = qrCode.ToJpegStream();
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.IO
' Create one-dimensional barcode
Private barcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("IronBarcode1234", BarcodeEncoding.Code128)
' Convert barcode to JPEG stream
Private barcodeStream As Stream = barcode.ToStream(AnyBitmap.ImageFormat.Jpeg)
' Create QR code
Private qrCode As GeneratedBarcode = QRCodeWriter.CreateQrCode("IronBarcode1234")
' Convert QR code to JPEG stream
Private qrCodeStream As Stream = qrCode.ToJpegStream()
進階流導出範例
這個綜合範例示範如何從各種資料類型建立條碼,並將其作為不同格式的資料流匯出:
using IronBarCode;
using IronSoftware.Drawing;
using System.IO;
using System.Drawing.Imaging;
public class BarcodeStreamExporter
{
public static void ExportMultipleFormats()
{
// Generate barcode with custom data
var myBarcode = BarcodeWriter.CreateBarcode("PRODUCT-2024-001", BarcodeEncoding.Code128);
// Apply styling
myBarcode.ResizeTo(300, 150);
myBarcode.SetMargins(10);
myBarcode.AddAnnotationTextAboveBarcode("Product ID");
// Export to different stream formats
Stream pngStream = myBarcode.ToPngStream();
Stream jpegStream = myBarcode.ToJpegStream();
Stream pdfStream = myBarcode.ToPdfStream();
Stream tiffStream = myBarcode.ToTiffStream();
// Use with HTTP response (ASP.NET Core example)
// return File(pngStream, "image/png", "barcode.png");
}
public static byte[] GenerateQRCodeBytes(string data)
{
// Create QR code with error correction
var qrCode = QRCodeWriter.CreateQrCodeWithLogo(data, "logo.png", 500);
// Convert to byte array via stream
using (var stream = qrCode.ToStream())
{
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
return memoryStream.ToArray();
}
}
}
}
using IronBarCode;
using IronSoftware.Drawing;
using System.IO;
using System.Drawing.Imaging;
public class BarcodeStreamExporter
{
public static void ExportMultipleFormats()
{
// Generate barcode with custom data
var myBarcode = BarcodeWriter.CreateBarcode("PRODUCT-2024-001", BarcodeEncoding.Code128);
// Apply styling
myBarcode.ResizeTo(300, 150);
myBarcode.SetMargins(10);
myBarcode.AddAnnotationTextAboveBarcode("Product ID");
// Export to different stream formats
Stream pngStream = myBarcode.ToPngStream();
Stream jpegStream = myBarcode.ToJpegStream();
Stream pdfStream = myBarcode.ToPdfStream();
Stream tiffStream = myBarcode.ToTiffStream();
// Use with HTTP response (ASP.NET Core example)
// return File(pngStream, "image/png", "barcode.png");
}
public static byte[] GenerateQRCodeBytes(string data)
{
// Create QR code with error correction
var qrCode = QRCodeWriter.CreateQrCodeWithLogo(data, "logo.png", 500);
// Convert to byte array via stream
using (var stream = qrCode.ToStream())
{
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
return memoryStream.ToArray();
}
}
}
}
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.IO
Imports System.Drawing.Imaging
Public Class BarcodeStreamExporter
Public Shared Sub ExportMultipleFormats()
' Generate barcode with custom data
Dim myBarcode = BarcodeWriter.CreateBarcode("PRODUCT-2024-001", BarcodeEncoding.Code128)
' Apply styling
myBarcode.ResizeTo(300, 150)
myBarcode.SetMargins(10)
myBarcode.AddAnnotationTextAboveBarcode("Product ID")
' Export to different stream formats
Dim pngStream As Stream = myBarcode.ToPngStream()
Dim jpegStream As Stream = myBarcode.ToJpegStream()
Dim pdfStream As Stream = myBarcode.ToPdfStream()
Dim tiffStream As Stream = myBarcode.ToTiffStream()
' Use with HTTP response (ASP.NET Core example)
' return File(pngStream, "image/png", "barcode.png")
End Sub
Public Shared Function GenerateQRCodeBytes(data As String) As Byte()
' Create QR code with error correction
Dim qrCode = QRCodeWriter.CreateQrCodeWithLogo(data, "logo.png", 500)
' Convert to byte array via stream
Using stream = qrCode.ToStream()
Using memoryStream As New MemoryStream()
stream.CopyTo(memoryStream)
Return memoryStream.ToArray()
End Using
End Using
End Function
End Class
如何選擇合適的格式?
請根據您的需求選擇合適的格式:
PNG :最適合網頁使用,支援透明度,無損壓縮
- JPEG :檔案較小,非常適合不需要透明度的情況。
- PDF :非常適合文件整合、報告和列印格式
- TIFF :高品質存檔用途,支援多頁。 GIF :顏色選擇有限,適用於簡單的動畫條碼。
常見的串流處理場景有哪些?
基於流的條碼處理技術可實現眾多實際應用:
1.直接 HTTP 回應:無需中間儲存即可向 Web 用戶端提供條碼 2.資料庫二進位儲存:將條碼資料儲存為 BLOB 字段 3.基於記憶體的快取:快取為高效能場景產生的條碼 4.串流鍊式處理:透過轉換管道處理條碼 5.批次處理:無需磁碟 I/O 即可產生數千個條碼
處理串流資料
在處理資料流時,您可能需要從資料流讀取條碼。 以下是一個往返處理的範例:
using IronBarCode;
using System.IO;
using System.Collections.Generic;
public class StreamRoundTrip
{
public static void ProcessBarcodeStream()
{
// Generate barcode and get stream
var originalBarcode = BarcodeWriter.CreateBarcode("STREAM-TEST-123", BarcodeEncoding.Code128);
Stream barcodeStream = originalBarcode.ToStream();
// Read barcode back from stream
var results = BarcodeReader.Read(barcodeStream);
foreach (var result in results)
{
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Format: {result.BarcodeType}");
}
// Don't forget to dispose of the stream
barcodeStream.Dispose();
}
}
using IronBarCode;
using System.IO;
using System.Collections.Generic;
public class StreamRoundTrip
{
public static void ProcessBarcodeStream()
{
// Generate barcode and get stream
var originalBarcode = BarcodeWriter.CreateBarcode("STREAM-TEST-123", BarcodeEncoding.Code128);
Stream barcodeStream = originalBarcode.ToStream();
// Read barcode back from stream
var results = BarcodeReader.Read(barcodeStream);
foreach (var result in results)
{
Console.WriteLine($"Value: {result.Value}");
Console.WriteLine($"Format: {result.BarcodeType}");
}
// Don't forget to dispose of the stream
barcodeStream.Dispose();
}
}
Imports IronBarCode
Imports System.IO
Imports System.Collections.Generic
Public Class StreamRoundTrip
Public Shared Sub ProcessBarcodeStream()
' Generate barcode and get stream
Dim originalBarcode = BarcodeWriter.CreateBarcode("STREAM-TEST-123", BarcodeEncoding.Code128)
Dim barcodeStream As Stream = originalBarcode.ToStream()
' Read barcode back from stream
Dim results = BarcodeReader.Read(barcodeStream)
For Each result In results
Console.WriteLine($"Value: {result.Value}")
Console.WriteLine($"Format: {result.BarcodeType}")
Next
' Don't forget to dispose of the stream
barcodeStream.Dispose()
End Sub
End Class
性能考量
將條碼匯出為資料流時,請考慮以下效能最佳化技巧:
-重複使用流:使用初始容量為 MemoryStream 以獲得更好的效能
-非同步操作:處理大量資料時使用非同步方法。
-流池化:實現流池化以應對高頻操作
格式選擇:謹慎選擇格式-PNG 通常比 PDF 快。
IronBarcode入門指南
要開始在您的專案中使用基於流的條碼生成,請訪問我們的綜合入門指南。 將條碼匯出為串流的文件提供了更多基於串流的工作流程範例和最佳實務。
IronBarcode可以輕鬆建立條碼並將其匯出到 MemoryStream 物件。 這種基於串流的方法提供了卓越的效能、增強的安全性以及與現代雲端原生應用程式的無縫整合。
常見問題解答
如何將 BarCode 轉換為 MemoryStream 而不儲存至磁碟?
使用 IronBarcode,您可以使用 ToStream() 方法直接將條碼轉換為 MemoryStream。只需使用 BarcodeWriter.CreateBarcode() 創建您的條碼,並在結果上呼叫 ToStream()。這會在預設情況下產生一個 PNG 流,而不需要任何檔案 I/O 操作。
將 BarCode 轉換為串流時,可以匯出哪些影像格式?
IronBarcode 支援將條碼匯出成多種格式的串流。當使用 ToStream() 方法時,預設格式為 PNG。您也可以使用專為不同圖像類型設計的特定方法匯出成其他格式,以根據您應用程式的需求提供彈性。
為什麼我應該使用基於流的 BarCode 產生方法,而不是基於檔案的方法?
使用 IronBarcode 生成基于流的條形碼可通過避免临時文件来增強安全性,通過直接內存操作来提高性能,為容器化环境提供無缝云兼容性,以及通過减少磁盘空间使用和文件系统開销来提高资源效率。
我可以在匯出 QR 碼為串流之前套用自訂樣式嗎?
是的,IronBarcode 允許您在輸出 QR 代碼為串流之前,將自訂的樣式套用在 QR 代碼上。QRCodeWriter 支援所有的樣式選項,ToStream() 方法在套用您所需的自訂樣式之後可以無縫運作,在碼流輸出中維持樣式外觀。
將 BarCode 匯出為 MemoryStreams 的常見用例有哪些?
IronBarcode 的流导出功能非常適合需要在 HTTP 响應中直接返回條形碼的 Web API 响應、數据庫存储為二進制 blob、电子邮件附件以及与云服务或無服务器环境集成(文件系统访問受限)。
如何只用一行代碼就能建立條碼流?
IronBarcode 可使用單行條碼流創建:BarcodeWriter.CreateBarcode(「您的值」, BarcodeEncoding.Code128).ToStream()。這將使用您指定的值和編碼創建一個條碼,然後馬上將其轉換為 MemoryStream,而無需中間步驟。

