Cómo Leer Códigos de Barras Desde Flujos en C#

Cómo leer códigos de barras desde transmisiones con C

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

<Descripción: Diagrama o captura de pantalla que ilustre el concepto de código -->

IronBarcode lee códigos de barras directamente desde objetos MemoryStream en aplicaciones .NET, eliminando la necesidad de guardar primero los flujos en el disco. Esto permite un procesamiento eficaz de códigos de barras a partir de flujos de imágenes y documentos PDF almacenados en memoria.

MemoryStream es una clase de .NET Framework que lee y escribe en flujos almacenados en memoria. Manipula datos sin archivos físicos, almacenándolos en su lugar en la memoria. Este enfoque funciona bien para aplicaciones web, API o escenarios en los que se reciben datos de códigos de barras como matrices de bytes o se necesita procesar imágenes sin crear archivos temporales.

Además de leer códigos de barras de archivos de imagen o archivos PDF, IronBarcode también lee códigos de barras de secuencias. La biblioteca acepta documentos PDF o secuencias de imágenes como entrada y emite los resultados de la lectura de códigos de barras. Esta capacidad se adapta al procesamiento de datos de bases de datos, cargas web o contenido almacenado en memoria caché.

Quickstart: Read Barcode Directly from Image Stream (Inicio rápido: lectura directa de códigos de barras a partir de secuencias de imágenes)

Utilice dos líneas de código con IronBarcode para leer códigos de barras de cualquier flujo de imágenes, sin necesidad de escribir en disco. Este ejemplo muestra la lectura de códigos de barras basada en secuencias en .NET.

Nuget IconEmpieza a crear PDF con NuGet ahora:

  1. Instalar IronBarcode con el gestor de paquetes NuGet

    PM > Install-Package BarCode

  2. Copie y ejecute este fragmento de código.

    var result = IronBarCode.BarcodeReader.Read(myImageStream);
    Console.WriteLine(result[0].Text);
  3. Despliegue para probar en su entorno real

    Empieza a utilizar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer

¿Cómo leer BarCodes a partir de flujos de imágenes?

<Descripción: Diagrama o captura de pantalla que ilustre el concepto de código -->

¿Por qué usar flujos de memoria en lugar de archivos?

Los flujos de memoria ofrecen varias ventajas sobre las operaciones basadas en archivos. Eliminan la sobrecarga de E/S del disco, lo que agiliza las aplicaciones. Aumentan la seguridad, ya que los datos sensibles de los códigos de barras nunca tocan el disco. También se adaptan a entornos de nube en los que el acceso a disco es limitado o caro. En combinación con las funciones async y multithreading de IronBarcode, puede procesar varios flujos simultáneamente para obtener el máximo rendimiento.

Esta sección muestra cómo utilizar IronBarcode para leer un flujo de imágenes y múltiples flujos de imágenes almacenados en una Lista<MemoryStream>. El siguiente código incluye comentarios para explicar el proceso:

¿Qué tipos de formatos de imagen se admiten?

IronBarcode admite varios formatos de imagen para la lectura de secuencias: JPEG, PNG, GIF, TIFF, BMP y SVG. Esta flexibilidad permite procesar imágenes de códigos de barras independientemente del formato de origen. Para obtener resultados óptimos, utilice la configuración del lector de códigos de barras para ajustar el proceso de lectura.

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

¿Cómo manejar múltiples flujos de imágenes?

El código anterior muestra IronBarcode aceptando un único objeto MemoryStream o una lista de objetos MemoryStream en el método BarcodeReader.Read(). El ejemplo convierte archivos de imagen en objetos MemoryStream y lee códigos de barras directamente de los flujos.

Al procesar varios flujos, IronBarcode utiliza sus opciones de velocidad de lectura de forma eficiente. Ajuste la velocidad de lectura en función de sus necesidades, ya requiera la máxima precisión o el tiempo de procesamiento más rápido. Para leer varios códigos de barras de un único flujo, IronBarcode detecta y devuelve automáticamente todos los códigos de barras encontrados.

Para mejorar la precisión con imágenes imperfectas o de baja calidad en los flujos, aplique filtros de corrección de imágenes antes del procesamiento. Esto mejora significativamente las tasas de reconocimiento de códigos de barras.

¿Cómo leer códigos de barras de flujos de documentos PDF?

<Descripción: Diagrama o captura de pantalla que ilustre el concepto de código -->

¿Por qué usar ReadPdf() en lugar de Read()?

El método ReadPdf() optimiza específicamente los documentos PDF, ofreciendo ventajas sobre el método genérico Read(). Maneja eficazmente características específicas de PDF como documentos multipágina, gráficos vectoriales e imágenes incrustadas. El método procesa todas las páginas PDF automáticamente y maneja varios formatos PDF y tipos de compresión. Para conocer todas las funciones, consulte el tutorial de lectura de códigos de barras.

Esta sección demuestra el uso de IronBarcode para leer archivos de documentos PDF como objetos MemoryStream o listas de flujos de documentos PDF. Este es el código:

¿Qué pasa con los documentos PDF múltiples?

: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

¿Cómo puedo procesar varios flujos de PDF de forma eficaz?

La lectura de códigos de barras de documentos PDF como objetos MemoryStream se asemeja a la lectura de imágenes. La diferencia clave es el método: BarcodeReader.ReadPdf() gestiona específicamente documentos PDF. El ejemplo utiliza IronPDF para convertir documentos PDF en objetos MemoryStream.

Para varios documentos PDF, fusione todos los PDF en un flujo de documentos antes de introducirlo en BarcodeReader.ReadPdf(). Este enfoque procesa de forma más eficiente que la gestión de cada PDF por separado y reduce la sobrecarga de memoria. Configure Lectores de códigos de barras específicos de PDF para optimizar la lectura de sus documentos.

Para escenarios avanzados, procese páginas específicas o regiones de PDF. IronBarcode permite especificar intervalos de páginas y recortar regiones dentro de las páginas, centrándose en las áreas donde aparecen los códigos de barras. Esto mejora la velocidad de procesamiento de documentos de gran tamaño.

Al utilizar flujos en producción, elimine correctamente los objetos MemoryStream para evitar fugas de memoria. El enunciado using garantiza la eliminación automática:

using (MemoryStream pdfStream = new MemoryStream(pdfBytes))
{
    var results = BarcodeReader.ReadPdf(pdfStream);
    // Process results
}
using (MemoryStream pdfStream = new MemoryStream(pdfBytes))
{
    var results = BarcodeReader.ReadPdf(pdfStream);
    // Process results
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Experimente y adapte la biblioteca a sus necesidades específicas. La flexible API de IronBarcode permite una amplia personalización del proceso de lectura, desde el ajuste de la sensibilidad de detección hasta la especificación de los formatos de código de barras esperados.

Preguntas Frecuentes

¿Cómo puedo leer códigos de barras de secuencias sin guardarlos primero en el disco?

IronBarcode le permite leer códigos de barras directamente desde objetos MemoryStream sin guardarlos en disco. Basta con pasar el flujo al método BarcodeReader.Read(). Este método elimina la sobrecarga de E/S de disco y es ideal para procesar imágenes de cargas web, bases de datos o API.

¿Qué formatos de imagen admite el lector de códigos de barras al procesar secuencias?

IronBarcode admite varios formatos de imagen al leer de secuencias, incluidos JPEG, PNG, GIF, TIFF, BMP y SVG. Esta flexibilidad le permite procesar imágenes de códigos de barras de diversas fuentes sin conversión de formatos.

¿Puedo procesar varios flujos de imágenes de códigos de barras al mismo tiempo?

Sí, IronBarcode admite funciones asíncronas y multihilo, lo que le permite procesar varios flujos de códigos de barras simultáneamente para obtener el máximo rendimiento. Esto resulta especialmente útil cuando se realizan operaciones masivas de lectura de códigos de barras desde la memoria.

¿Cuáles son las ventajas de utilizar flujos de memoria frente a la lectura de códigos de barras basada en archivos?

El procesamiento de flujos de memoria con IronBarcode ofrece un rendimiento más rápido al eliminar la sobrecarga de E/S del disco, una mayor seguridad, ya que los datos confidenciales nunca entran en contacto con el almacenamiento en disco, y una mejor compatibilidad con entornos en la nube en los que el acceso al disco puede ser limitado o costoso.

¿Cómo puedo leer códigos de barras de flujos de documentos PDF?

IronBarcode puede leer códigos de barras tanto de imágenes como de documentos PDF. Simplemente pase su PDF MemoryStream al método BarcodeReader.Read(), y extraerá y decodificará todos los códigos de barras encontrados dentro de las páginas PDF.

¿Es posible ajustar el proceso de lectura de códigos de barras cuando se trabaja con secuencias?

Sí, IronBarcode proporciona configuraciones personalizables del lector de códigos de barras que le permiten optimizar el proceso de lectura para su caso de uso específico, ya sea procesando flujos individuales o múltiples flujos almacenados en colecciones.

Hairil Hasyimi Bin Omar
Ingeniero de Software
Como todos los grandes ingenieros, Hairil es un ávido aprendiz. Está refinando su conocimiento de C#, Python y Java, usando ese conocimiento para agregar valor a los miembros del equipo en Iron Software. Hairil se unió al equipo de Iron Software desde la Universiti Teknologi MARA en Malasia, donde se ...
Leer más
¿Listo para empezar?
Nuget Descargas 2,002,059 | Versión: 2025.12 recién lanzado