如何在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可讓您產生條碼並將其直接轉換為 MemoryStream 對象,而無需檔案 I/O,從而提高效能和安全性。 這種簡化的方法消除了磁碟操作,並實現了與應用程式的無縫整合。 無論是建立 Web API、處理批量操作,還是與雲端服務集成,基於流的條碼生成都能提供現代應用程式所需的靈活性和效率。

快速入門:立即將條碼匯出至串流

使用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


如何將條碼匯出為資料流?

建立具有所需值的條碼後,使用 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();
$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影像格式

將條碼以流的形式匯出為各種圖像格式

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

性能考量

將條碼匯出為資料流時,請考慮以下效能最佳化技巧:

-重複使用流:使用初始容量為 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,而無需中間步驟。

Hairil Hasyimi Bin Omar
軟體工程師
和所有优秀的工程师一样,Hairil 是個努力学习者。他正在细化自己的 C# 、Python 和 Java 知识,将这些知识應用于 Iron Software 各個团队成员以增加价值。Hairil 自马来西亚 Universiti Teknologi MARA 加入 Iron Software 团队,并以化学与工艺工程学士学位毕业。
準備好開始了嗎?
Nuget 下載 2,121,847 | 版本: 2026.3 剛剛發布
Still Scrolling Icon

還在捲動嗎?

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