如何使用IronBarcode在C#中創建條碼為流

How to Export Barcodes as Streams in C

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronBarcode 讓您能夠生成 BarCode,並直接將其轉換為 MemoryStream 物件,無需進行檔案 I/O 操作,從而提升效能與安全性。 此精簡化方法省去了磁碟操作,並能與應用程式無縫整合。 無論是建置 Web API、處理批次作業,還是與雲端服務整合,基於流的 BarCode 生成技術都能提供現代應用程式所需的靈活性與效率。

快速入門:立即將BarCode匯出至串流 using IronBarcode 生成 BARCODE,並透過一行程式碼直接將其轉換為 MemoryStream。 無需檔案系統。

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/BarCode

    PM > Install-Package BarCode
  2. 請複製並執行此程式碼片段。

    var stream = BarcodeWriter.CreateBarcode("Quick123", BarcodeEncoding.Co/de128).ToStream();
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronBarcode

    arrow pointer


如何將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()
$vbLabelText   $csharpLabel

為何使用流(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 針對 PDF 文件格式
ToPngStream() PNG 關於 PNG 圖像格式
ToStream() PNG(預設) 預設為 PNG 圖像格式。 接受 AnyBitmap.ImageFormat 枚舉欄位作為參數,以指定所需格式
ToTiffStream() TIFF 關於 TIFF 圖像格式

將BarCode匯出為多種圖像格式的串流

請使用 ToJpegStreamToStream 方法,將資料流輸出為 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()
$vbLabelText   $csharpLabel

進階串流匯出範例

此完整範例示範如何從各種資料類型建立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
$vbLabelText   $csharpLabel

如何選擇合適的格式?

請根據您的需求選擇合適的格式:

  • PNG:最適合網頁使用,支援透明度與無損壓縮
  • JPEG:檔案大小較小,在不需要透明度時是理想選擇
  • PDF:非常適合文件整合、報告及可列印格式
  • TIFF:適用於高品質歸檔用途,支援多頁文件
  • GIF:色彩有限,適用於帶有動畫的簡單BARCODE

常見的流處理情境有哪些?

基於流的BarCode處理技術可應用於眾多實務場景:

  1. 直接 HTTP 回應:無需中間儲存即可將 BarCode 傳送給網頁客戶端
  2. 資料庫二進位儲存:將 BarCode 資料儲存為 BLOB 欄位
  3. 基於記憶體的快取:針對高效能情境,將生成的BARCODE儲存至快取中
  4. 流程鏈結:透過轉換管道處理BarCode
  5. 批次處理:無需磁碟 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
$vbLabelText   $csharpLabel

效能考量

將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設計為可擴展且多功能,使其適合小型專案和需要強大條碼解決方案的大型企業應用。

Hairil Hasyimi Bin Omar
軟體工程師
如同所有傑出的工程師,Hairil 是一位熱衷學習的人。他正不斷精進自己在 C#、Python 和 Java 方面的知識,並運用這些知識為 Iron Software 的團隊成員創造價值。Hairil 從馬來西亞馬拉科技大學(Universiti Teknologi MARA)加入 Iron Software 團隊,他在該校取得化學與製程工程學士學位。
準備好開始了嗎?
Nuget 下載 2,240,258 | 版本: 2026.5 just released
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package BarCode
執行範例 看您的字串變成 BarCode。