Lesen von Barcodes aus Multi-Page/Frame GIF und TIFF

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

von Hairil Hasyimi Bin Omar

IronBarcode unterstützt verschiedene Bildformate zum Einlesen, einschließlich mehrseitiger und mehrbildiger GIF- und TIFF-Bildformate. Dies erleichtert den Benutzern die Verwendung des Bildes, ohne dass sie die Rahmen oder Seiten einer TIFF- oder GIF-Datei manuell trennen müssen. Sehen wir uns an, wie IronBarcode diese Dateiformate lesen kann.

Erste Schritte mit IronBarcode

Beginnen Sie noch heute mit der Verwendung von IronBarcode in Ihrem Projekt mit einer kostenlosen Testversion.

Erster Schritt:
green arrow pointer


Lesen von GIF- und TIFF-Multiframe-Bildern

Das Lesen von mehrseitigen GIF- und TIFF-Bildern mit IronBarcode ist genauso einfach wie das Lesen von Einzelbildern, da IronBarcode die mehrseitigen Bilddateien ohne weiteres in die Methode BarcodeReader.Read akzeptiert.

Das folgende Codebeispiel zeigt, wie mehrseitige GIF- und TIFF-Dateien gelesen werden können:

: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#

Bilder in GIF und TIFF konvertieren

Erfahren Sie, wie Sie Bilder mit Hilfe unserer Open-Source-Bibliothek in mehrseitige TIFF- und GIF-Dateien konvertieren können,EisenZeichnung. Schauen wir uns nun das folgende Codebeispiel an, um ein mehrseitiges GIF- oder TIFF-Bild zu erzeugen.

: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#

Aus dem obigen Codeschnipsel können wir zunächst eine Reihe von Bilddateien gruppieren, indem wir sie in eine Liste von AnyBitmap-Objekten importieren. Diese Liste kann dann als Parameter verwendet werden, wenn die Methoden "AnyBitmap.CreateMultiFrameTiff" und "AnyBitmap.CreateMultiFrameGif" aufgerufen werden, um die Multipage-TIFF- bzw. Multipage-GIF-Objekte zu erhalten.

Obwohl sowohl das mehrseitige GIF- als auch das TIFF-Format eine Möglichkeit bieten, Bilder in einer einzigen Datei zusammenzufassen, gibt es einige Unterschiede zwischen den beiden Formaten, die im Folgenden erläutert werden:

AspektMehrseitige GIFMehrseitiges TIFF
KomprimierungGIF-Bilder werden verlustfrei komprimiert, was bedeutet, dass bei der Komprimierung keine Bilddaten verloren gehen. Dies führt zu relativ größeren Dateigrößen im Vergleich zu Formaten mit verlustbehafteter Komprimierung.TIFF-Dateien können verschiedene Komprimierungsmethoden verwenden, einschließlich verlustfreier Komprimierung (wie LZW) und verlustbehafteter Komprimierung (wie JPEG). Dank dieser Flexibilität können TIFF-Dateien einen Ausgleich zwischen Dateigröße und Bildqualität schaffen.
FarbtiefeGIF unterstützt bis zu 256 Farben (8-Bit-Farbtiefe), was im Vergleich zu anderen Formaten begrenzt ist. Diese begrenzte Farbpalette kann zu einem Verlust an Details und Farbgenauigkeit führen, insbesondere bei Fotos und Bildern mit FarbverläufenTIFF unterstützt verschiedene Farbtiefen, darunter 1-Bit (binär), 8-Bit (256 Farben), 24-Bit (Echtfarbe) und mehr. Diese Flexibilität ermöglicht es TIFF, Bilder mit unterschiedlichen Farbdetails zu speichern.
TransparenzGIF unterstützt binäre Transparenz, was bedeutet, dass eine einzelne Farbe vollständig transparent sein kann, während die übrigen Farben vollständig undurchsichtig sind. Dieser Mangel an partieller Transparenz kann manchmal zu gezackten Rändern in Bildern mit weichen Übergängen führen.TIFF unterstützt mehrere Formen von Transparenz, einschließlich binärer Transparenz (ähnlich wie GIF) und Alphakanal-Transparenz. Die Alphakanal-Transparenz ermöglicht weiche Übergänge und halbtransparente Pixel und bietet hochwertige Transparenzeffekte.
AnimationGIF unterstützt einfache Animationen, indem es mehrere Bilder in einer einzigen Datei zusammenfasst. Jedes Bild kann seine eigene Zeitverzögerung haben, wodurch eine einfache Form der Animation entsteht. GIF-Animationen werden im Web weitgehend unterstützt.TIFF ist nicht in erster Linie für Animationen gedacht. Es kann zwar mehrere Bilder speichern, verfügt aber nicht über eine integrierte Animationsunterstützung wie GIF. Jede Seite in einer mehrseitigen TIFF-Datei ist in der Regel ein separates Bild und nicht ein Frame in einer Animationssequenz.

Fortgeschrittenes Barcode-Lesen

Obwohl IronBarcode direkt nach dem Auspacken funktioniert, kann es bei einigen Bildern erforderlich sein, die Klasse BarcodeReaderOptions zu konfigurieren, um ein genaues und schnelles Barcode-Lesen zu erreichen. Weitere Informationen zu dieser Klasse finden Sie in der 'Wie man Barcodes aus Bilddateien (jpg, png, gif, tiff, svg, bmp) liest' Artikel.

Der folgende Codeschnipsel enthält Beispiele für die erforderlichen Eigenschaften, die in der Klasse "BarcodeReaderOptions" konfiguriert werden können.

: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#

Im Codeschnipsel setzen wir nicht nur die Eigenschaften von "BarcodeReaderOptions", sondern wenden auch einige Filter an, insbesondere den "SharpenFilter" und den "ContrastFilter". Diese Filter tragen wesentlich dazu bei, die Klarheit unscharfer Bilder für die Erkennung und das Lesen von Strichcodes zu verbessern. Weitere Informationen zu Bildkorrekturfiltern finden Sie im Abschnitt 'Verwendung von Bildkorrekturfiltern' Artikel.

Für das Objekt BarcodeReaderOptions empfehlen wir, dass Benutzer ExpectMultipleBarcodes für IronBarcode einschließen, um alle verfügbaren Barcodes in der Bilddatei zu scannen, Speed, um ein Gleichgewicht zwischen der Lesegenauigkeit und der Leistung zu erreichen, ExpectBarcodeTypes, um die Leistung weiter zu erhöhen, und ImageFilters, um die Filter anzuwenden, die im Objekt ImageFilterCollection für die Lesegenauigkeit eingestellt sind.

Obwohl das Setzen des "BarcodeReaderOptions"-Objekts für die meisten Anwendungsfälle optional ist, ist es für Benutzer wichtig, das Beste aus IronBarcode herauszuholen, wenn sie Barcodes aus mehrseitigen GIF- und TIFF-Bilddateien lesen.

Hairil related to Fortgeschrittenes Barcode-Lesen

Hairil Hasyimi Bin Omar

Software-Ingenieur

Wie alle großartigen Ingenieure ist Hairil ein eifriger Lerner. Er verfeinert seine Kenntnisse in C#, Python und Java und nutzt dieses Wissen, um den Teammitgliedern von Iron Software einen Mehrwert zu bieten. Hairil kam von der Universiti Teknologi MARA in Malaysia zum Iron Software-Team, wo er einen Bachelor-Abschluss in Chemie- und Verfahrenstechnik erwarb.