How to create Barcodes as Streams in C# Using 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、处理批量操作还是与云服务集成,基于流的条形码生成都能提供现代应用程序所需的灵活性和效率。

快速入门:立即将条形码导出到流

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


如何将 BarCode 导出为数据流?

创建具有所需值的条形码后,使用 ToStream 方法将生成的条形码转换为 MemoryStream。 默认格式为 PNG。 即使在应用自定义样式之后,此功能也适用于 QRCodeWriter。 有关所有可用方法的全面文档,请参阅 API Reference

Export BarCode as Stream 示例

: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

为什么使用流而不是文件?

使用流消除了对文件系统的依赖,并提供内存处理以获得更好的性能。 这种方法非常适合网络应用程序、API 以及限制创建临时文件或不希望创建临时文件的场景。 基于流的处理方式具有多种优势:

  • 增强安全性:磁盘上没有可能暴露敏感数据的临时文件
  • 更好的性能:直接内存操作比磁盘 I/O 更快
  • 云兼容性:可在容器化和无服务器环境中无缝运行
  • 资源效率:减少磁盘空间使用和文件系统开销

何时应使用 MemoryStream 制作 BarCode?

当您需要在内存中处理条形码、直接将其发送到 HTTP 响应或与其他基于流的 API 集成而不创建临时文件时,请使用 MemoryStream。 常见情况包括

  • Web API 响应:直接在 HTTP 响应中返回 BarCode,无需保存到磁盘
  • 数据库存储:在数据库中将条码数据存储为二进制 blob
  • 电子邮件附件:在电子邮件中即时生成和附加 BarCode
  • 云存储:直接上传至 Azure Blob Storage、AWS S3 或类似服务
  • 实时处理:生成条形码,立即使用,无需持久化

哪些图像格式可以导出到 Streams?

IronBarcode 支持多种输出数据格式用于数据流导出。 有几种方法可以将条形码对象转换为 MemoryStream。 这些方法简化了流程,让您可以根据所需的图像格式进行选择。 可用的方法包括

翻译方法 翻译格式 说明
二进制流属性 位图 返回以位图图像形式渲染的条形码的 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();
$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:色调有限,适合带有动画的简单 BarCode

常见的流处理场景有哪些?

基于流的条形码处理可以实现众多实际应用:

1.直接 HTTP 响应:无需中间存储即可向网络客户端提供条形码服务 2.数据库二进制存储:将条形码数据存储为 BLOB 字段 3.基于内存的缓存:为高性能场景缓存生成的 BarCode 4.流连锁:通过转换管道处理 BarCode 5.批量处理:无需磁盘 I/O 即可生成数千个 BarCode

处理流数据

在使用数据流时,您可能需要从数据流中读取条形码。 下面是一个往返处理的例子:

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

性能考虑

以流形式导出 BarCode 时,请考虑以下性能提示:

-重用流:使用初始容量为 MemoryStream 以获得更好的性能

  • 异步操作:处理大量数据时使用异步方法
  • 流池化:为高频操作实施流池化
  • 格式选择:明智选择格式--PNG 通常比PDF更快

IronBarcode 入门

要开始在您的项目中使用基于流的条形码生成,请访问我们的综合入门指南Export barCode as stream documentation 为基于流的工作流提供了更多示例和最佳实践。

IronBarcode可以轻松创建条形码并将其导出到 MemoryStream 对象。 这种基于流的方法提供了卓越的性能、更强的安全性以及与现代云原生应用程序的无缝集成。

常见问题解答

如何将 BarCode 转换为 MemoryStream 而不保存到磁盘?

使用 IronBarcode,您可以使用 ToStream() 方法将条形码直接转换为 MemoryStream。只需使用 BarcodeWriter.CreateBarcode() 创建条形码,然后在结果上调用 ToStream()。这将默认生成一个 PNG 流,而无需任何文件 I/O 操作。

将 BarCode 转换为数据流时,可以导出哪些图像格式?

IronBarcode 支持将条形码导出为多种格式的数据流。使用 ToStream() 方法时,默认格式为 PNG。您还可以通过使用为不同图像类型设计的特定方法导出为其他格式,从而根据应用程序的要求灵活运用。

为什么要使用基于流的条形码生成方法而不是基于文件的方法?

使用 IronBarcode 生成基于流的条形码可避免临时文件,从而提高安全性;通过直接内存操作提高性能;无缝兼容容器化环境的云计算;通过减少磁盘空间使用和文件系统开销提高资源效率。

我能否在将 QR 代码导出为流之前应用自定义样式?

是的,IronBarcode 允许您在将 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 从马来西亚的玛拉工业大学加入 Iron Software 团队,获得化学与工艺工程学士学位。
准备开始了吗?
Nuget 下载 2,108,094 | 版本: 2026.3 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package BarCode
运行示例 观看您的字符串变成 BarCode。