How to Export Barcodes as Streams in C
IronBarcode 讓您能夠生成 BarCode,並直接將其轉換為 MemoryStream 物件,無需進行檔案 I/O 操作,從而提升效能與安全性。 此精簡化方法省去了磁碟操作,並能與應用程式無縫整合。 無論是建置 Web API、處理批次作業,還是與雲端服務整合,基於流的 BarCode 生成技術都能提供現代應用程式所需的靈活性與效率。
快速入門:立即將BarCode匯出至串流
using IronBarcode 生成 BARCODE,並透過一行程式碼直接將其轉換為 MemoryStream。 無需檔案系統。
簡化工作流程(5 個步驟)
- 下載 C# 函式庫,將 BarCode 匯出為串流
- 根據輸入值建立各種BarCode類型
- 將生成的BarCode轉換為資料流
- 使用特定方法將不同圖像格式匯出為串流
- 對流式資料進行進一步處理
如何將BarCode匯出為串流?
建立好包含所需數值的 BARCODE 後,請使用 ToStream 方法,將生成的 BARCODE 轉換為 MemoryStream。 預設格式為 PNG。 此功能亦適用於 QRCodeWriter,即使在套用自訂樣式後依然有效。 如需所有可用方法的完整文件,請參閱 API 參考指南。
將BarCode匯出為串流的範例
: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()
為何使用流(Streams)而非檔案?
使用資料流可消除對檔案系統的依賴,並透過記憶體內處理提升效能。 此方法非常適合用於網路應用程式、API,以及那些限制或不希望建立臨時檔案的場景。 基於流的處理具備以下幾項優勢:
- 強化安全性:磁碟上不會產生可能洩露敏感資料的暫存檔
- 更佳效能:直接記憶體操作比磁碟 I/O 更快
- 雲端相容性:可在容器化及無伺服器環境中無縫運作
- 資源效率:減少磁碟空間佔用與檔案系統開銷
何時應使用 MemoryStream 處理 BarCode?
當您需要在記憶體中處理 BarCode、將其直接傳送至 HTTP 回應,或與其他基於流的 API 整合而不建立臨時檔案時,請使用 MemoryStream。 常見應用情境包括:
- Web API 回應:直接在 HTTP 回應中傳回 BARCODE,無需儲存至磁碟
- 資料庫儲存:將BarCode資料以二進位大塊(binary blobs)形式儲存於資料庫中
- 電子郵件附件:即時生成並將 BarCode 附加至電子郵件
- 雲端儲存:直接上傳至 Azure Blob Storage、AWS S3 或類似服務
- 即時處理:生成可立即使用的BARCODE,無需儲存
我可以將哪些圖像格式匯出至 Streams?
IronBarcode 支援多種輸出資料格式,可進行串流匯出。 有多種方法可將BARCODE物件轉換為 MemoryStream。 這些方法簡化了流程,讓您能根據所需的影像格式進行選擇。 可用的方法包括:
| 方法 | 格式 | 描述 |
|---|---|---|
| BinaryStream 屬性 | 位圖 | 返回一個以 位圖 影像形式呈現的 BARCODE System.IO.Stream |
ToGifStream() |
GIF | 關於 GIF 圖像格式 |
ToJpegStream() |
JPEG/JPG | 關於 JPEG/JPG 圖像格式 |
ToPdfStream() |
針對 PDF 文件格式 | |
ToPngStream() |
PNG | 關於 PNG 圖像格式 |
ToStream() |
PNG(預設) | 預設為 PNG 圖像格式。 接受 AnyBitmap.ImageFormat 枚舉欄位作為參數,以指定所需格式 |
ToTiffStream() |
TIFF | 關於 TIFF 圖像格式 |
將BarCode匯出為多種圖像格式的串流
請使用 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()
進階串流匯出範例
此完整範例示範如何從各種資料類型建立BARCODE,並將其以不同格式的串流形式匯出:
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.Co/de128);
// 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.Co/pyTo(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.Co/de128);
// 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.Co/pyTo(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:色彩有限,適用於帶有動畫的簡單BARCODE
常見的流處理情境有哪些?
基於流的BarCode處理技術可應用於眾多實務場景:
- 直接 HTTP 回應:無需中間儲存即可將 BarCode 傳送給網頁客戶端
- 資料庫二進位儲存:將 BarCode 資料儲存為 BLOB 欄位
- 基於記憶體的快取:針對高效能情境,將生成的BARCODE儲存至快取中
- 流程鏈結:透過轉換管道處理BarCode
- 批次處理:無需磁碟 I/O 即可生成數千個 BARCODE
處理串流資料
在處理資料流時,您可能需要從資料流中讀取BARCODE。 以下為往返處理的範例:
using IronBarCode;
using System.IO;
using System.Co/llections.Generic;
public class StreamRoundTrip
{
public static void ProcessBarcodeStream()
{
// Generate barcode and get stream
var originalBarcode = BarcodeWriter.CreateBarcode("STREAM-TEST-123", BarcodeEncoding.Co/de128);
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.Co/llections.Generic;
public class StreamRoundTrip
{
public static void ProcessBarcodeStream()
{
// Generate barcode and get stream
var originalBarcode = BarcodeWriter.CreateBarcode("STREAM-TEST-123", BarcodeEncoding.Co/de128);
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
效能考量
將BarCode匯出為串流時,請參考以下效能建議:
- 重複使用流:使用
MemoryStream並設定初始容量以提升效能 - 非同步操作:處理大量資料時應使用非同步方法
- 串流池化:針對高頻率操作實作串流池化
- 格式選擇:請審慎選擇格式——PNG 通常比 PDF 載入速度更快
IronBarcode 入門指南
若要在您的專案中開始使用基於串流的BarCode生成功能,請參閱我們的完整入門指南。 《將BARCODE匯出為串流》文件提供了更多關於基於串流工作流程的範例與最佳實務。
IronBarcode 讓您能輕鬆建立並將 BARCODE 匯出至 MemoryStream 物件。 這種基於流的架構不僅提供卓越的效能與增強的安全性,更能與現代雲原生應用程式無縫整合。
常見問題
如何在不將條碼儲存至磁碟的情況下,將其轉換為MemoryStream?
使用IronBarcode,您可以使用ToStream()方法直接將條碼轉換為MemoryStream。只需使用BarcodeWriter.CreateBarcode()創建您的條碼,然後在結果上調用ToStream()。此方法預設生成PNG流,無需任何檔案I/O操作。
將條碼轉換為流時,我可以匯出哪些圖像格式?
IronBarcode支持將條碼匯出為多種格式的流。在使用ToStream()方法時,預設格式為PNG。您也可以通過使用針對不同圖像類型設計的特定方法來匯出其他格式,從而根據應用程式的需求提供靈活性。
為什麼我應該使用基於流的條碼生成而非基於檔案的方法?
使用IronBarcode的基於流的條碼生成能避開建立臨時檔案,提高效能,提供無縫的雲端相容性(適用於容器化環境),以及通過減少磁碟空間使用和檔案系統開銷來提高資源效率。
我可以在將QR碼匯出為流之前進行自訂樣式設計嗎?
可以,IronBarcode允許您在將QR碼匯出為流之前進行自訂樣式設計。QRCodeWriter支持所有樣式選項,在您應用所需的自訂設定後,ToStream()方法可無縫銜接,並在流輸出中保持樣式外觀。
將條碼匯出為MemoryStreams的常見使用案例有哪些?
IronBarcode的流匯出功能在您需要在HTTP回應中直接返回條碼的網頁API回應中非常理想,二進制大物件的數據庫儲存、電子郵件附件、以及在檔案系統訪問受限的雲服務或無伺服環境中的整合皆適用。
如何使用一行代碼創建條碼流?
IronBarcode允許只需一行代碼即可創建條碼流:BarcodeWriter.CreateBarcode("Your Value", BarcodeEncoding.Code128).ToStream()。這樣可使用您指定的值和編碼創建條碼,然後立即將其轉換為MemoryStream而無需中間步驟。
IronBarcode是否提供自定義條碼外觀的支持?
是的,IronBarcode提供了廣泛的條碼外觀自定義選項,包括顏色、大小和文字註釋,讓您可以根據具體設計需求定制條碼。
IronBarcode如何幫助改善業務流程效率?
IronBarcode通過使條碼生成和讀取快速且準確來提高業務流程效率,減少手動數據輸入錯誤,並改善庫存和資產追蹤。
將IronBarcode實現於專案中需要什麼程式設計技能?
基本的C#程式設計知識足以將IronBarcode實現於專案中,因為它提供了簡單的方法和全面的文檔來指導開發者。
IronBarcode適合於小型專案和大型企業應用嗎?
IronBarcode設計為可擴展且多功能,使其適合小型專案和需要強大條碼解決方案的大型企業應用。

