如何在C#中使用IronBarcode將條碼生成為流

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允許您生成條碼並直接將其轉換為MemoryStream物件,無需文件I/O,從而提高性能和安全性。 這種精簡的方式消除了磁盤操作,並實現了與應用程式的無縫整合。 無論是構建Web API、處理批量操作,還是與雲端服務整合,基於流的條碼生成提供了現代應用程式所需的靈活性和效率。

Quickstart: 即時匯出條碼至流

使用IronBarcode生成條碼並通過一行程式碼將其直接轉換為MemoryStream。 不需要文件系統。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/BarCode

    PM > Install-Package BarCode
  2. 複製並運行這段程式碼片段。

    var stream = BarcodeWriter.CreateBarcode("Quick123", BarcodeEncoding.Code128).ToStream();
  3. 部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronBarcode,透過免費試用

    arrow pointer


如何將條碼匯出為流?

一旦您透過建立了條碼並具有所需的值,使用MemoryStream。 預設格式為PNG。 此功能還適用於QRCodeWriter,即使在應用自定義樣式後也是如此。 有關所有可用方法的完整文件,請參閱API Reference

匯出條碼為流範例

: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

為什麼要使用流而不是文件?

使用流消除了文件系統的依賴,並提供了記憶體中的處理以提高性能。 這種方法適合於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 用於PDF文件格式
ToPngStream() PNG 用於PNG影像格式
ToStream() PNG(預設) 預設用於PNG影像格式。 接受AnyBitmap.ImageFormat枚舉欄位作為參數來指定所需格式
ToTiffStream() TIFF 用於TIFF影像格式

以多種影像格式匯出條碼為流

使用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()
$vbLabelText   $csharpLabel

進階流匯出範例

此綜合範例顯示如何從各種資料型別建立條碼並以不同格式將其匯出為流:

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
$vbLabelText   $csharpLabel

我如何選擇正確的格式?

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

  • 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
$vbLabelText   $csharpLabel

性能考量

匯出條碼為流時,請考慮以下性能提示:

  • 重用流:使用具有初始容量的MemoryStream以獲得更好性能
  • 非同步操作:處理大容量時使用非同步方法
  • 流池:為高頻操作實施流池
  • 格式選擇:明智地選擇格式,PNG通常比PDF更快

使用IronBarcode入門

要開始在您的專案中使用基於流的條碼生成,請存取我們的綜合入門指南條碼匯出為流文件提供了其他範例和基於流工作流程的最佳實踐。

IronBarcode讓建立和匯出條碼到MemoryStream物件變得簡單。 此基於流的方式提供了卓越的性能,增強的安全性,並與現代雲原生應用程式的無縫整合。

常見問題

如何在不將條碼儲存到磁碟的情況下將其轉換為MemoryStream?

使用IronBarcode,您可以直接使用ToStream()方法將條碼轉換為MemoryStream。只需用BarcodeWriter.CreateBarcode()建立您的條碼,然後對結果呼叫ToStream()。預設情況下,這會生成不進行任何文件I/O操作的PNG流。

轉換條碼為流時,我可以匯出哪種影像格式?

IronBarcode支持將條碼匯出為多種格式的流。使用ToStream()方法時,預設格式為PNG。您也可以通過為不同影像型別設計的特定方法匯出至其他格式,以適應應用程式的需求。

為什麼應該使用基於流的條碼生成,而非基於文件的方法?

使用IronBarcode的基於流的條碼生成方法能增強安全性,避免臨時文件,通過直接的記憶體操作提高效能,與容器環境的無縫雲端相容性,並通過減少磁碟空間和文件系統負擔來提高資源效率。

在將QR碼匯出為流之前,我可以應用自定樣式嗎?

是的,IronBarcode允許您在將QR碼匯出為流之前應用自定樣式。QRCodeWriter支持所有樣式選項,並且ToStream()方法在應用您所需的定製後無縫運行,保持了流輸出的樣式外觀。

匯出條碼為MemoryStreams的常見使用案例是什麼?

IronBarcode的流匯出功能非常適合需要在HTTP回應中直接返回條碼的Web API回應、作為二進位資料塊的資料庫儲存、電子郵件附件,以及檔案系統存取受限的雲端服務或無服務環境中的整合。

如何在一行程式碼中建立條碼流?

IronBarcode使得一行程式碼即可建立條碼流:BarcodeWriter.CreateBarcode(“您的值”,BarcodeEncoding.Code128).ToStream()。這會建立具有您指定的值和編碼的條碼,然後立即將其轉換為MemoryStream,而無需中間步驟。

IronBarcode是否提供自定義條碼外觀的支持?

是的,IronBarcode提供了廣泛的條碼外觀自定義選項,包括顏色、大小和文字註釋,讓您可以根據具體設計需求定制條碼。

IronBarcode如何幫助改善業務流程效率?

IronBarcode通過使條碼生成和讀取快速且準確來提高業務流程效率,減少手動資料輸入錯誤,並改善庫存和資產追蹤。

將IronBarcode實現於專案中需要什麼程式設計技能?

基本的C#程式設計知識足以將IronBarcode實現於專案中,因為它提供了簡單的方法和全面的文件來指導開發者。

IronBarcode適合於小型專案和大型企業應用嗎?

IronBarcode設計為可擴展且多功能,使其適合小型專案和需要強大條碼解決方案的大型企業應用。

Hairil Hasyimi Bin Omar
軟體工程師
和所有偉大的工程師一樣,Hairil是一位充滿熱情的學習者。他正在完善自己對C#、Python和Java的知識,並利用這些知識為Iron Software的團隊成員創造價值。Hairil從馬來西亞的瑪拉工藝大學畢業,擁有化學與流程工程學士學位,後加入Iron Software團隊。
準備好開始了嗎?
Nuget 下載 2,331,688 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在滾動嗎?

想快速驗證嗎? PM > Install-Package BarCode
運行範例觀看您的字串成為條碼。