How to Export Barcodes as Streams in C
IronBarcode允许您生成条码并直接转换为MemoryStream对象,而无需文件I/O,从而提高性能和安全性。 这种简化的方法可以消除磁盘操作,实现与应用程序的无缝集成。 无论是构建 Web API、处理批量操作还是与云服务集成,基于流的条形码生成都能提供现代应用程序所需的灵活性和效率。
快速入门:瞬间导出条形码到流
使用IronBarcode生成条码,并一行代码直接转换为MemoryStream。 无需文件系统。
最小工作流程(5 个步骤)
- 下载C#库以导出条形码为流
- 从输入值创建各种条形码类型
- 将生成的条形码转换为流
- 使用特定的方法将不同的图像格式导出为流
- 对流数据进行进一步处理
如何将 BarCode 导出为数据流?
一旦通过创建了所需值的条码,使用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?
当您需要在内存中处理条码时,使用MemoryStream,将它们直接发送到HTTP响应,或与其他基于流的API集成,而无需创建临时文件。 常见情况包括
- 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 作为流导出
使用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 而不保存到磁盘?
using IronBarcode,您可以使用 ToStream() 方法将条形码直接转换为 MemoryStream。只需使用 BarcodeWriter.CreateBarcode() 创建条形码,然后在结果上调用 ToStream()。这将默认生成一个 PNG 流,而无需任何文件 I/O 操作。
将 BarCode 转换为数据流时,可以导出哪些图像格式?
IronBarcode 支持将条形码导出为多种格式的数据流。使用 ToStream() 方法时,默认格式为 PNG。您还可以通过使用为不同图像类型设计的特定方法导出为其他格式,从而根据应用程序的要求灵活运用。
为什么要使用基于流的条形码生成方法而不是基于文件的方法?
using IronBarcode 生成基于流的条形码可避免临时文件,从而提高安全性;通过直接内存操作提高性能;无缝兼容容器化环境的云计算;通过减少磁盘空间使用和文件系统开销提高资源效率。
我能否在将 QR 代码导出为流之前应用自定义样式?
是的,IronBarcode 允许您在将 QR 代码导出为流之前对其应用自定义样式。QRCodeWriter 支持所有样式选项,ToStream() 方法在应用您所需的定制后可无缝运行,在流输出中保持样式外观。
将 BarCode 导出为 MemoryStreams 的常见用例有哪些?
IronBarcode 的流导出功能非常适合需要在 HTTP 响应中直接返回条形码的 Web API 响应、以二进制 blob 形式存储的数据库、电子邮件附件以及与云服务或无服务器环境的集成(文件系统访问受限)。
如何仅用一行代码创建条码流?
IronBarcode 可通过以下方式实现单线条码流创建:BarcodeWriter.CreateBarcode("您的值", BarcodeEncoding.Code128).ToStream()。这将用您指定的值和编码创建一个条码,然后立即将其转换为 MemoryStream,无需中间步骤。
IronBarcode是否提供支持自定义条形码外观的功能?
是的,IronBarcode为条形码外观提供广泛的自定义选项,包括颜色、大小和文本注释,允许运您将条形码设计成符合您特定的设计要求。
IronBarcode如何帮助提高业务流程的效率?
IronBarcode通过快速准确的条码生成和读取提高了业务流程效率,减少了手动数据输入错误,并改善了库存和资产跟踪。
在项目中实现IronBarcode需要哪些编程技能?
了解C#编程的基础知识就足以在项目中实现IronBarcode,因为它提供了简单的方法和全面的文档来指导开发人员。
IronBarcode适合小项目和大型企业应用吗?
IronBarcode被设计为可扩展且多功能,适合需要强大条码解决方案的小项目和大型企业应用。

