如何在 C# 中将条形码导出为数据流
IronBarcode允许您生成条形码并将其直接转换为 MemoryStream 对象,而无需文件 I/O,从而提高性能和安全性。 这种简化的方法可以消除磁盘操作,实现与应用程序的无缝集成。 无论是构建 Web API、处理批量操作还是与云服务集成,基于流的条形码生成都能提供现代应用程序所需的灵活性和效率。
快速入门:立即将条形码导出到流
使用IronBarcode生成条形码,并用一行代码将其直接转换为 MemoryStream。 无需文件系统。
最小工作流程(5 个步骤)
- 下载C#库以导出条形码为流
- 从输入值创建各种条形码类型
- 将生成的条形码转换为流
- 使用特定的方法将不同的图像格式导出为流
- 对流数据进行进一步处理
如何将 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();
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()
为什么使用流而不是文件?
使用流消除了对文件系统的依赖,并提供内存处理以获得更好的性能。 这种方法非常适合网络应用程序、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 文档格式 | |
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()
高级流导出示例
本综合示例演示了如何从各种数据类型创建条形码,并将其导出为不同格式的流:
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
如何选择正确的格式?
根据您的要求选择合适的格式:
- 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();
}
}
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 入门
要开始在您的项目中使用基于流的条形码生成,请访问我们的综合入门指南。 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,无需中间步骤。

