Cómo leer códigos de barras de GIF y TIFF multipágina/cuadro

por Hairil Hasyimi Bin Omar

IronBarcode admite varias entradas de formato de imagen para la lectura, incluidos los formatos de imagen GIF y TIFF de varias páginas y varios fotogramas. Esto facilita a los usuarios el uso de la imagen sin tener que separar manualmente los cuadros o páginas de un archivo TIFF o GIF. Exploremos cómo utilizar IronBarcode para leer estos formatos de archivo.

Biblioteca NuGet C# para

Instalar con NuGet

Install-Package BarCode
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

Leer imágenes multiframe GIF y TIFF

La lectura de imágenes multiframe GIF y TIFF mediante IronBarcode es tan sencilla como la lectura de una sola imagen, ya que IronBarcode acepta fácilmente los archivos de imagen multipágina en el método BarcodeReader.Read. Los usuarios no tienen que realizar ninguna preparación de la imagen, ya que todas ellas han sido internalizadas en la librería.

El siguiente ejemplo de código muestra cómo leer archivos GIF y TIFF multipágina:

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-multi-page-frame-tiff-gif-read-tif.cs
using IronBarCode;
using System;

//  Leer código de barras de una imagen TIF
BarcodeResults results = BarcodeReader.Read("sample.tif");

//  Envía el valor del código de barras a la consola
foreach (var result in results)
{
    Console.WriteLine(result.Value);
}
Imports IronBarCode
Imports System

'  Leer código de barras de una imagen TIF
Private results As BarcodeResults = BarcodeReader.Read("sample.tif")

'  Envía el valor del código de barras a la consola
For Each result In results
	Console.WriteLine(result.Value)
Next result
VB   C#

Convertir imágenes a GIF y TIFF

Aprenda a convertir imágenes a TIFF y GIF multipágina utilizando nuestra biblioteca de código abierto, IronDrawing. Ahora, veamos el siguiente ejemplo de código sobre cómo generar una imagen GIF o TIFF multipágina.

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-multi-page-frame-tiff-gif-create-tiff-gif.cs
using IronBarCode;
using IronSoftware.Drawing;
using System.Collections.Generic;

//  Importar imágenes
List<AnyBitmap> images = new List<AnyBitmap>()
{
    AnyBitmap.FromFile("image1.png"),
    AnyBitmap.FromFile("image2.png"),
    AnyBitmap.FromFile("image3.png"),
    AnyBitmap.FromFile("image4.jpg"),
    AnyBitmap.FromFile("image5.jpg")
};

//  Convertir TIFF de imágenes
AnyBitmap tiffImage = AnyBitmap.CreateMultiFrameTiff(images);

//  Exportar TIFF
tiffImage.SaveAs("multiframetiff.tiff");

//  Convertir GIF a partir de imágenes
AnyBitmap gifImage = AnyBitmap.CreateMultiFrameGif(images);

//  Exportar GIF
gifImage.SaveAs("multiframegif1.gif");
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.Collections.Generic

'  Importar imágenes
Private images As New List(Of AnyBitmap)() From {AnyBitmap.FromFile("image1.png"), AnyBitmap.FromFile("image2.png"), AnyBitmap.FromFile("image3.png"), AnyBitmap.FromFile("image4.jpg"), AnyBitmap.FromFile("image5.jpg")}

'  Convertir TIFF de imágenes
Private tiffImage As AnyBitmap = AnyBitmap.CreateMultiFrameTiff(images)

'  Exportar TIFF
tiffImage.SaveAs("multiframetiff.tiff")

'  Convertir GIF a partir de imágenes
Dim gifImage As AnyBitmap = AnyBitmap.CreateMultiFrameGif(images)

'  Exportar GIF
gifImage.SaveAs("multiframegif1.gif")
VB   C#

A partir del fragmento de código anterior, podemos agrupar primero una serie de archivos de imagen importándolos en una lista de objetos AnyBitmap. Esta lista se puede utilizar como parámetro al llamar a los métodos AnyBitmap.CreateMultiFrameTiff y AnyBitmap.CreateMultiFrameGif para obtener los objetos TIFF multipágina y GIF multipágina, respectivamente.

Aunque tanto GIF multipágina como TIFF ofrecen una forma de agrupar imágenes en un único archivo, existen varias diferencias entre ambos formatos, como se indica a continuación:

AspectoGIF multipáginaTIFF multipágina
CompresiónLas imágenes GIF utilizan compresión sin pérdidas, lo que significa que no se pierden datos de imagen durante la compresión. El resultado es un tamaño de archivo relativamente mayor que el de los formatos con compresión con pérdida.Los archivos TIFF pueden utilizar varios métodos de compresión, incluida la compresión sin pérdidas (como LZW) y la compresión con pérdidas (como JPEG). Esta flexibilidad permite a los archivos TIFF encontrar un equilibrio entre el tamaño del archivo y la calidad de la imagen.
Profundidad de colorEl formato GIF admite hasta 256 colores (8 bits de profundidad de color), lo cual es limitado en comparación con otros formatos. Esta paleta de colores limitada puede provocar una pérdida de detalle y precisión cromática, sobre todo en fotografías e imágenes con degradados.TIFF admite varias profundidades de color, como 1 bit (binario), 8 bits (256 colores), 24 bits (color verdadero) y más. Esta flexibilidad permite a TIFF almacenar imágenes con distintos niveles de detalle de color.
TransparenciaEl GIF admite la transparencia binaria, lo que significa que un solo color puede ser totalmente transparente y el resto de los colores totalmente opacos. Esta falta de transparencia parcial puede provocar a veces bordes dentados en imágenes con transiciones suaves.TIFF admite múltiples formas de transparencia, incluida la transparencia binaria (similar a GIF) y la transparencia de canal alfa. La transparencia de canal alfa permite transiciones suaves y píxeles semitransparentes, proporcionando efectos de transparencia de alta calidad.
AnimaciónEl formato GIF permite realizar animaciones sencillas combinando varios fotogramas en un único archivo. Cada fotograma puede tener su propio retardo, creando una forma básica de animación. Las animaciones GIF están muy extendidas en Internet.TIFF no está diseñado principalmente para animaciones. Aunque puede almacenar múltiples imágenes, carece de soporte de animación integrado como el GIF. Cada página de un archivo TIFF multipágina suele ser una imagen independiente, en lugar de un fotograma de una secuencia de animación.

Lectura avanzada de códigos de barras

Aunque IronBarcode funciona directamente, algunas imágenes pueden requerir la configuración de la clase BarcodeReaderOptions para conseguir una lectura precisa y rápida del código de barras. Encontrará más información sobre esta clase en la sección 'Cómo leer códigos de barras de archivos de imagen (jpg, png, gif, tiff, svg, bmp)' artículo.

El siguiente fragmento de código proporciona ejemplos de las propiedades necesarias que se pueden configurar en la clase BarcodeReaderOptions.

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-multi-page-frame-tiff-gif-advance.cs
using IronBarCode;
using System;

//  Configurar filtros
ImageFilterCollection filters = new ImageFilterCollection()
{
    new SharpenFilter(3.5f),
    new ContrastFilter(2)
};

//  Configurar opciones
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    ExpectBarcodeTypes = IronBarCode.BarcodeEncoding.QRCode,
    ImageFilters = filters,
    ExpectMultipleBarcodes = true,
    Speed = ReadingSpeed.Balanced
};

//  Leer código de barras de una imagen TIF
BarcodeResults results = BarcodeReader.Read("sample.tif", options);

//  Envía el valor del código de barras a la consola
foreach (var result in results)
{
    Console.WriteLine(result.Value);
}
Imports IronBarCode
Imports System

'  Configurar filtros
Private filters As New ImageFilterCollection() From {
	New SharpenFilter(3.5F),
	New ContrastFilter(2)
}

'  Configurar opciones
Private options As New BarcodeReaderOptions() With {
	.ExpectBarcodeTypes = IronBarCode.BarcodeEncoding.QRCode,
	.ImageFilters = filters,
	.ExpectMultipleBarcodes = True,
	.Speed = ReadingSpeed.Balanced
}

'  Leer código de barras de una imagen TIF
Private results As BarcodeResults = BarcodeReader.Read("sample.tif", options)

'  Envía el valor del código de barras a la consola
For Each result In results
	Console.WriteLine(result.Value)
Next result
VB   C#

En el fragmento de código, no sólo establecemos las propiedades BarcodeReaderOptions, sino que también aplicamos algunos filtros, concretamente el SharpenFilter y el ContrastFilter. Estos filtros ayudan esencialmente a mejorar la claridad de las imágenes borrosas para la detección y lectura de códigos de barras. Encontrará más información sobre los filtros de corrección de imágenes en la sección 'Cómo utilizar los filtros de corrección de imagen' artículo.

Para el objeto BarcodeReaderOptions, sugerimos que los usuarios incluyan ExpectMultipleBarcodes para que IronBarcode escanee todos los códigos de barras disponibles en el archivo de imagen, Speed para equilibrar la precisión de la lectura y el rendimiento, ExpectBarcodeTypes para aumentar aún más el rendimiento, e ImageFilters para aplicar los filtros establecidos en el objeto ImageFilterCollection para la precisión de la lectura.

Aunque la configuración del objeto BarcodeReaderOptions es opcional para la mayoría de los casos de uso, es importante que los usuarios saquen el máximo partido de IronBarcode cuando lean códigos de barras de archivos de imagen GIF y TIFF de varias páginas.