How to Read Barcodes From Streams in C#

如何使用 C# 从流中读取条形码

This article was translated from English: Does it need improvement?
Translated
View the article in English

MemoryStream 是 .NET Framework 中的一个类,它提供了一种从存储在内存中的流读取和写入数据的方法。 它是一种可用于操作未存储在物理文件中,而是存储在内存中的数据的流类型。

除了从图像文件或 PDF 文件中读取条形码外,IronBarcode 在从数据流中读取条形码方面也表现出色。 作为应用程序中一个强大的 API,IronBarcode 能够接受 PDF 文档或图像流作为输入,并输出流中条形码的读取结果。 现在让我们来看看如何才能实现这一点。

快速入门:直接从图像流读取条形码

使用 IronBarcode,只需两行代码即可从任何图像流中读取条形码——无需先写入磁盘。这个简单的示例展示了在 .NET 中入门基于流的条形码读取是多么容易。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronBarcode

    PM > Install-Package BarCode

  2. 复制并运行这段代码。

    var result = IronBarCode.BarcodeReader.Read(myImageStream);
    Console.WriteLine(result[0].Text);
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronBarcode,免费试用!
    arrow pointer

从图像流中读取条形码

在本节中,我们将向您展示如何使用 IronBarcode 读取图像流,以及如何读取存储在List<MemoryStream>中的多个图像流。 List<MemoryStream> 。 以下是修正后的代码块,并附有注释,以帮助您理解其运行过程:

using IronBarCode;
using System;
using System.Collections.Generic;
using System.IO;

class BarcodeFromImageStream
{
    static void Main(string[] args)
    {
        // Create a list of MemoryStreams to store image streams
        List<MemoryStream> imageStreams = new List<MemoryStream>
        {
            // Example of adding an existing MemoryStream object to the list
            new MemoryStream(File.ReadAllBytes("example1.png")),
            new MemoryStream(File.ReadAllBytes("example2.png"))
        };

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-streams-1.cs
using IronBarCode;
using System;
using System.Collections.Generic;
using System.IO;

class BarcodeFromImageStream
{
    static void Main(string[] args)
    {
        // Create a list of MemoryStreams to store image streams
        List<MemoryStream> imageStreams = new List<MemoryStream>
        {
            // Example of adding an existing MemoryStream object to the list
            new MemoryStream(File.ReadAllBytes("example1.png")),
            new MemoryStream(File.ReadAllBytes("example2.png"))
        };

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 System
Imports System.Collections.Generic
Imports System.IO

Friend Class BarcodeFromImageStream
	Shared Sub Main(ByVal args() As String)
		' Create a list of MemoryStreams to store image streams
		Dim imageStreams As New List(Of MemoryStream) From {
			New MemoryStream(File.ReadAllBytes("example1.png")),
			New MemoryStream(File.ReadAllBytes("example2.png"))
		}

Dim IronBarCode As using
Using IronSoftware.Drawing
	Dim System As using
	Using System.Collections.Generic
		Using System.IO
			
			Dim 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
		End Using
	End Using
End Using
$vbLabelText   $csharpLabel

从上面的代码片段可以看出,IronBarcode 可以将一个对象或一个MemoryStream对象列表传递给BarcodeReader.Read()方法,并将流对象作为输入读取。 该示例展示了如何将图像文件转换为MemoryStream对象,并直接读取流中存在的条形码。

从 PDF 文档流中读取条形码

在本节中,我们将向您展示如何使用 IronBarcode 将 PDF 文档文件读取为MemoryStream对象或 PDF 文档的MemoryStream列表。 以下是改进后的代码块:

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-streams-2.cs
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
$vbLabelText   $csharpLabel

如上面的代码片段所示,从 PDF 文档中读取条形码作为MemoryStream对象与从图像中读取条形码非常相似。 主要区别在于使用的方法: BarcodeReader.ReadPdf()专门用于 PDF 文档。 在这个示例中,我们使用IronPDF库作为辅助工具,将 PDF 文档转换为MemoryStream对象。 如果您希望 IronBarcode 读取多个 PDF 文档,建议将所有 PDF 文档合并到一个 PDF 文档流中,并将其提供给BarcodeReader.ReadPdf()方法。 您可以随意尝试,并根据您的具体需求调整库的使用方式!

常见问题解答

如何在C#中从图像流中读取条形码?

您可以使用IronBarcode在C#中从图像流中读取条形码。将图像文件转换为MemoryStream对象,然后使用BarcodeReader.Read()方法从这些流中解码条形码。

如何使用.NET从PDF文档流中读取条形码?

要在.NET中从PDF文档流中读取条形码,请使用IronBarcode的BarcodeReader.ReadPdf()方法。首先,将您的PDF文档转换为MemoryStream对象,可能使用IronPDF,然后将它们传递给该方法。

我可以从单个PDF流中读取多个条形码吗?

是的,IronBarcode的BarcodeReader.ReadPdf()方法可以处理单个PDF流并返回多个BarcodeResult对象,每个对象代表PDF中找到的一个条形码。

在.NET中使用MemoryStream进行条形码读取的优势是什么?

使用MemoryStream允许有效地在内存中操作数据,使其在您想要在不依赖物理文件存储的情况下读取条形码的情况下非常理想。

如果有多个PDF文档需要处理条形码,我应该怎么做?

如果您有多个PDF文档,请考虑将它们合并为一个PDF流。这可以使用BarcodeReader.ReadPdf()方法有效读取以提取所有条形码。

在单个应用程序中能否从图像和PDF流中读取条形码?

是的,IronBarcode支持从图像和PDF流中读取条形码。您可以在同一个应用程序中使用BarcodeReader.Read()读取图像并使用BarcodeReader.ReadPdf()读取PDF。

如何在C#中将图像文件转换为MemoryStream?

通过读取图像字节使用File.ReadAllBytes(),并将字节数组传递给MemoryStream构造函数来在C#中将图像文件转换为MemoryStream

我需要额外的库来将PDF文件转换为MemoryStreams吗?

虽然可以使用IronPDF来便捷地将PDF文件转换为MemoryStream对象,但IronBarcode可以直接处理PDF流以进行条形码读取。

从图像和PDF流中读取条形码有什么区别?

主要区别在于使用的方法:BarcodeReader.Read()用于图像流,而BarcodeReader.ReadPdf()专为PDF文档流设计。

有没有示例代码可以从C#中的流读取条形码?

是的,文章提供示例C#代码,展示如何使用IronBarcode读取图像和PDF中的条形码,强调将图像文件转换为MemoryStream对象的过程。

Hairil Hasyimi Bin Omar
软件工程师
如所有伟大的工程师一般,Hairil 是个热心的学习者。他正在提高对 C#、Python 和 Java 的知识,并利用这些知识为 Iron Software 团队成员增值。Hairil 从马来西亚的玛拉工业大学加入 Iron Software 团队,获得化学与工艺工程学士学位。
准备开始了吗?
Nuget 下载 1,979,979 | Version: 2025.11 刚刚发布