How to Read Barcodes from Streams with C#
IronBarcode可直接从.NET应用程序中的MemoryStream对象读取条形码,省去了先将流保存到磁盘的步骤。这样可以高效地从存储在内存中的图像和PDF文档流中处理条形码。
MemoryStream是一个.NET Framework类,可以从内存存储的流中读取并写入。 它无需物理文件即可处理数据,而是将数据存储在内存中。 这种方法适用于网络应用程序、API 或以字节数组形式接收条形码数据或需要在不创建临时文件的情况下处理图像的场景。
除了从图像文件或PDF文件中读取条形码外,IronBarcode 还可以从数据流中读取条形码。 该库接受 PDF 文档或图像流作为输入,并输出条形码读取结果。 该功能适合处理来自数据库、网络上传或内存缓存内容的数据。
快速入门:从图像流直接读取条形码using IronBarcode 只需两行代码即可从任何图像流中读取条形码--无需写入磁盘。 本示例演示了在 .NET 中基于流的 BarCode 读取。
-
1Install IronBarcode with NuGet Package Manager
-
2复制并运行这段代码。
var result = IronBarCode.BarcodeReader.Read(myImageStream); Console.WriteLine(result[0].Text);C# -
3部署到您的生产环境中进行测试
通过免费试用立即在您的项目中开始使用IronBarcode
最小工作流程(5 个步骤)
- 从图像流中读取条形码
- 从 PDF 文档流中读取条形码
如何从图像流中读取 BarCode?
为什么使用内存流而不是文件?
与基于文件的操作相比,内存流具有多项优势。 它们消除了磁盘 I/O 开销,使应用程序速度更快。 由于敏感的 BarCode 数据从未接触过磁盘,因此它们提高了安全性。 它们还适用于磁盘访问有限或昂贵的云环境。结合 IronBarcode 的 async 和多线程功能,您可以同时处理多个数据流,以获得最高性能。
本节展示如何使用IronBarcode读取存储在List<MemoryStream>中的图像流和多个图像流。 以下代码包含注释,用于解释翻译过程:
支持哪些类型的图像格式?
IronBarcode 从数据流中读取数据时支持多种图像格式:JPEG、PNG、GIF、TIFF、BMP 和 SVG。 这种灵活性允许处理条形码图像,而无需考虑源格式。 为获得最佳效果,请使用条码阅读器设置对阅读过程进行微调。
using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;
using System.IO;
List<MemoryStream> list = new List<MemoryStream>();
list.Add(AnyBitmap.FromFile("image1.jpg").ToStream());
list.Add(AnyBitmap.FromFile("image2.jpg").ToStream());
list.Add(AnyBitmap.FromFile("image3.png").ToStream());
var myBarcode = BarcodeReader.Read(list);
foreach (var barcode in myBarcode)
{
Console.WriteLine(barcode.ToString());
}Imports IronBarCode
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic
Imports System.IO
Private list As New List(Of MemoryStream)()
list.Add(AnyBitmap.FromFile("image1.jpg").ToStream())
list.Add(AnyBitmap.FromFile("image2.jpg").ToStream())
list.Add(AnyBitmap.FromFile("image3.png").ToStream())
Dim myBarcode = BarcodeReader.Read(list)
For Each barcode In myBarcode
Console.WriteLine(barcode.ToString())
Next barcode如何处理多个图像流?
上面的代码展示了IronBarcode在MemoryStream对象的列表。 该示例将图像文件转换为MemoryStream对象,并直接从流中读取条形码。
在处理多个数据流时,IronBarcode 会高效地使用其读取速度选项。 根据您的需求调整阅读速度--无论是要求最高的准确性还是最快的处理时间。对于从一个数据流中读取多个条码,IronBarcode会自动检测并返回所有找到的条码。
为提高流中不完美或低质量图像的准确性,请在处理前应用图像校正过滤器。 这样可以大大提高 BarCode 的识别率。
如何从 PDF 文档流中读取 BarCode?
为什么使用Read()?
Read()方法的优势。 它能有效处理 PDF 的特定功能,如多页文档、矢量图形和嵌入式图像。 该方法可自动处理所有 PDF 页面,并可处理各种 PDF 格式和压缩类型。有关全面的功能,请参阅读取 BarCode 教程。
本节演示如何使用IronBarcode将PDF文档文件读取为MemoryStream对象或PDF文档流的列表。 以下是代码:
多个 PDF 文档怎么办?
using IronBarCode;
using IronPdf;
using System;
using System.IO;
MemoryStream document = PdfDocument.FromFile(@"file_path.pdf").Stream;
var myBarcode = BarcodeReader.ReadPdf(document);
foreach (var value in myBarcode)
{
Console.WriteLine(value.ToString());
}Imports IronBarCode
Imports IronPdf
Imports System
Imports System.IO
Private document As MemoryStream = PdfDocument.FromFile("file_path.pdf").Stream
Private myBarcode = BarcodeReader.ReadPdf(document)
For Each value In myBarcode
Console.WriteLine(value.ToString())
Next value如何高效处理多个 PDF 流?
从PDF文档中作为MemoryStream对象读取条形码类似于从图像中读取。 关键区别在于方法:BarcodeReader.ReadPdf()专门处理PDF文档。 该示例使用IronPDF将PDF文档转换为MemoryStream对象。
对于多个PDF文档,将所有PDF合并为一个文档流,然后再输入到BarcodeReader.ReadPdf()。 与单独处理每个 PDF 相比,这种方法处理效率更高,还能减少内存开销。 配置PDF 专用条形码阅读器设置,以优化文档的读取。
对于高级场景,可处理特定页面或 PDF 区域。 IronBarcode 允许指定页面范围和页面内的裁剪区域,针对出现条形码的区域进行裁剪。 这样可以提高大型文档的处理速度。
在生产环境中使用流时,正确处置MemoryStream对象以防止内存泄漏。 using语句确保自动处置:
using (MemoryStream pdfStream = new MemoryStream(pdfBytes))
{
var results = BarcodeReader.ReadPdf(pdfStream);
// Process results
}Imports System.IO
Using pdfStream As New MemoryStream(pdfBytes)
Dim results = BarcodeReader.ReadPdf(pdfStream)
' Process results
End Using请根据您的具体需求尝试和调整该库。 IronBarcode 灵活的 API 允许广泛的读取过程定制,从调整检测灵敏度到指定预期的条码格式。
常见问题解答
如何在不先保存到磁盘的情况下从数据流中读取 BarCode?
IronBarcode 允许您直接从 MemoryStream 对象读取条形码,而无需保存到磁盘。只需将您的数据流传递给 BarcodeReader.Read() 方法即可。这种方法消除了磁盘 I/O 的开销,非常适合处理来自网络上传、数据库或 API 的图像。
条码阅读器在处理数据流时支持哪些图像格式?
IronBarcode 从数据流中读取数据时支持多种图像格式,包括 JPEG、PNG、GIF、TIFF、BMP 和 SVG。这种灵活性使您无需进行格式转换即可处理各种来源的条码图像。
我可以同时处理多个 BarCode 图像流吗?
是的,IronBarcode 支持异步和多线程功能,允许您同时处理多个条码流以获得最高性能。这在处理内存中的批量条码读取操作时尤其有用。
与基于文件的条形码读取相比,使用内存流有哪些优势?
using IronBarcode 进行内存流处理可消除磁盘 I/O 开销,从而提供更快的性能;由于敏感数据从不接触磁盘存储,因此安全性得到了增强;在磁盘访问可能受限或昂贵的云环境中,兼容性更好。
如何从 PDF 文档流中读取 BarCode?
IronBarcode 可以从图像和 PDF 文档流中读取条形码。只需将您的 PDF MemoryStream 传递给 BarcodeReader.Read() 方法,它便会提取并解码 PDF 页面中的所有条码。
在使用数据流时,是否可以对条形码读取过程进行微调?
是的,IronBarcode 提供可定制的条码阅读器设置,允许您根据具体使用情况优化读取过程,无论是处理单个数据流还是存储在集合中的多个数据流。
How do I manage multiple PDF streams for barcode reading with IronBarcode?
For multiple PDFs, merge them into a single document stream and process with `BarcodeReader.ReadPdf()`. This approach enhances efficiency by reducing processing overhead and memory usage.
What steps are involved in reading a barcode from an image stream using IronBarcode?
First, instantiate a `MemoryStream` for your image data, then call `BarcodeReader.Read()` on the stream. This simple process allows for direct barcode extraction from in-memory data.
How can IronBarcode handle image correction for low-quality images?
IronBarcode provides image correction filters, improving barcode recognition rates for imperfect or low-quality image streams, enhancing overall reading accuracy.
How do I ensure efficient memory usage when processing streams with IronBarcode?
Ensure to dispose of `MemoryStream` objects after use, ideally with a `using` statement to prevent memory leaks. This practice is crucial in production to maintain optimal performance.
