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

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

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;

// Read barcode from TIF image
BarcodeResults results = BarcodeReader.Read("sample.tif");

// Output the barcodes value to console
foreach (var result in results)
{
    Console.WriteLine(result.Value);
}
Imports IronBarCode
Imports System

' Read barcode from TIF image
Private results As BarcodeResults = BarcodeReader.Read("sample.tif")

' Output the barcodes value to console
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;

// Import images
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")
};

// Convert TIFF from images
AnyBitmap tiffImage = AnyBitmap.CreateMultiFrameTiff(images);

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

// Convert GIF from images
AnyBitmap gifImage = AnyBitmap.CreateMultiFrameGif(images);

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

' Import images
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")}

' Convert TIFF from images
Private tiffImage As AnyBitmap = AnyBitmap.CreateMultiFrameTiff(images)

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

' Convert GIF from images
Dim gifImage As AnyBitmap = AnyBitmap.CreateMultiFrameGif(images)

' Export 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;

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

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

// Read barcode from TIF image
BarcodeResults results = BarcodeReader.Read("sample.tif", options);

// Output the barcodes value to console
foreach (var result in results)
{
    Console.WriteLine(result.Value);
}
Imports IronBarCode
Imports System

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

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

' Read barcode from TIF image
Private results As BarcodeResults = BarcodeReader.Read("sample.tif", options)

' Output the barcodes value to console
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.

Hairil Hasyimi Bin Omar

Ingeniero de software

Como todos los grandes ingenieros, Hairil es un ávido aprendiz. Está perfeccionando sus conocimientos de C#, Python y Java, y los utiliza para añadir valor a los miembros del equipo de Iron Software. Hairil se unió al equipo de Iron Software desde la Universiti Teknologi MARA de Malasia, donde se licenció en Ingeniería Química y de Procesos.