How to Read Barcodes from Streams with C
IronBarcode lee códigos de barras directamente desde objetos MemoryStream en aplicaciones .NET, eliminando la necesidad de guardar streams en el disco primero. Esto permite un procesamiento eficiente de códigos de barras tanto de imagen como de streams de documentos PDF almacenados en memoria.
MemoryStream es una clase de .NET Framework que lee de y escribe en streams 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é.
Inicio rápido: Leer código de barras directamente desde el flujo 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.
-
Instala IronBarcode con el Administrador de Paquetes NuGet
PM > Install-Package BarCode -
Copie y ejecute este fragmento de código.
var result = IronBarCode.BarcodeReader.Read(myImageStream); Console.WriteLine(result[0].Text); -
Despliegue para probar en su entorno real
Comienza a usar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
Flujo de trabajo mínimo (5 pasos)
- Leer códigos de barras desde el flujo de imágenes
- Leer códigos de barras desde el flujo de documentos PDF
¿Cómo leer BarCodes a partir de flujos de imágenes?
¿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 stream de imagen y varios streams de imagen almacenados en un List<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
¿Cómo manejar múltiples flujos de imágenes?
El código anterior muestra a 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 desde los streams.
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?
¿Por qué usar ReadPdf() en lugar de Read()?
El método ReadPdf() se optimiza específicamente para 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 streams 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
¿Cómo puedo procesar varios flujos de PDF de forma eficaz?
Leer códigos de barras de documentos PDF como objetos MemoryStream se asemeja a la lectura desde imágenes. La diferencia clave es el método: BarcodeReader.ReadPdf() maneja específicamente documentos PDF. El ejemplo utiliza IronPDF para convertir documentos PDF a objetos MemoryStream.
Para múltiples documentos PDF, fusionar todos los PDFs en un solo stream de documentos antes de alimentarlo a 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 usar streams en producción, disponga adecuadamente de objetos MemoryStream para prevenir fugas de memoria. La declaración using asegura la disposició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
}
Imports System.IO
Using pdfStream As New MemoryStream(pdfBytes)
Dim results = BarcodeReader.ReadPdf(pdfStream)
' Process results
End Using
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.
¿IronBarcode proporciona soporte para personalizar la apariencia de los códigos de barras?
Sí, IronBarcode proporciona amplias opciones de personalización para la apariencia de los códigos de barras, incluidas color, tamaño y anotaciones de texto, permitiéndote adaptar los códigos de barras a tus requisitos de diseño específicos.
¿Cómo puede IronBarcode ayudar a mejorar la eficiencia de los procesos de negocio?
IronBarcode mejora la eficiencia de los procesos de negocio al permitir la generación y lectura rápida y precisa de códigos de barras, reduciendo errores de entrada de datos manuales y mejorando el seguimiento de inventario y activos.
¿Qué habilidades de programación se necesitan para implementar IronBarcode en un proyecto?
El conocimiento básico de programación en C# es suficiente para implementar IronBarcode en un proyecto, ya que proporciona métodos sencillos y documentación completa para guiar a los desarrolladores.
¿Es IronBarcode adecuado para tanto proyectos pequeños como aplicaciones empresariales grandes?
IronBarcode está diseñado para ser escalable y versátil, haciéndolo adecuado para proyectos pequeños, así como para aplicaciones empresariales grandes que requieren soluciones robustas de códigos de barras.

