Comment éditer des formats de données

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

par Hairil Hasyimi Bin Omar

Au lieu de se contenter de lire le code-barres et d'imprimer les valeurs dans la console, IronBarcode offre bien plus. Il fournit plusieurs formats de sortie qui permettent aux utilisateurs de traiter les résultats de la lecture. Ces formats comprennent des propriétés telles que l'image du code-barres, le type de code-barres, BinaryValue, les coordonnées, la hauteur, la largeur, le numéro de page, le code-barres, l'orientation de la page, le texte et la valeur.

Les utilisateurs peuvent manipuler ces propriétés dans le programme. Voyons comment utiliser ces propriétés et quels sont les cas d'utilisation où elles peuvent être utiles.

Commencer avec IronBarcode

Commencez à utiliser IronBarcode dans votre projet dès aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer


Formats de sortie et cas d'utilisation

BarcodeResult contient plusieurs propriétés utiles. Ces propriétés sont énumérées ci-dessous :

  • BarcodeImage
  • BarcodeType
  • BinaryValue
  • Coordonnées, hauteur et largeur
  • Numéro de page
  • Barcode et PageOrientation
  • Texte et valeur

Image de code-barres

Une fois qu'IronBarcode a effectué le processus de lecture sur une image, les codes-barres trouvés dans l'image seront stockés dans BarcodeResult en tant que propriété BarcodeImage de type AnyBitmap. La propriété BarcodeImage stocke les images de codes-barres trouvées. Les utilisateurs peuvent récupérer cet objet pour poursuivre le traitement de l'image ou l'enregistrer en tant que copie permanente. Cette méthode est efficace et facile à utiliser car elle élimine la nécessité d'écrire des codes supplémentaires pour extraire les images de codes-barres d'une image.

Examinons l'extrait de code ci-dessous qui illustre un cas d'utilisation possible de ce format de sortie

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-BarcodeImage.cs
using IronBarCode;
using IronSoftware.Drawing;
using System.Collections.Generic;

// Read barcode from PDF file
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");

// Create list for barcodes
List<AnyBitmap> barcodeList = new List<AnyBitmap>();

foreach (BarcodeResult barcode in result)
{
    barcodeList.Add(barcode.BarcodeImage);
}

// Create multi-page TIFF
AnyBitmap.CreateMultiFrameTiff(barcodeList).SaveAs("barcodeImages.tif");
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.Collections.Generic

' Read barcode from PDF file
Private result As BarcodeResults = BarcodeReader.ReadPdf("test.pdf")

' Create list for barcodes
Private barcodeList As New List(Of AnyBitmap)()

For Each barcode As BarcodeResult In result
	barcodeList.Add(barcode.BarcodeImage)
Next barcode

' Create multi-page TIFF
AnyBitmap.CreateMultiFrameTiff(barcodeList).SaveAs("barcodeImages.tif")
VB   C#

L'extrait de code ci-dessus illustre l'un des cas d'utilisation de ce format de sortie. Plus précisément, il est conçu pour créer une image TIFF multipage à partir de codes-barres détectés dans un document PDF. Tout d'abord, nous scannons ou détectons les codes-barres dans l'échantillon de PDF. Ensuite, nous créons une liste AnyBitmap dans laquelle nous stockons les informations de la propriété BarcodeImage. Enfin, nous utilisons cette liste pour générer un TIFF multipage à l'aide de la méthode CreateMultiFrameTiff.

A noter
la propriété BarcodeImage de BarcodeResult ne stocke que les images des code-barres trouvés lors de la lecture et non l'image d'entrée elle-même.

Type de code-barres

Cette propriété aide les utilisateurs à déterminer le type de code-barres présent dans l'image ou le document d'entrée. Cependant, cette fonctionnalité est limitée par le fait que le type de code-barres à l'intérieur de l'image doit être celui qui est pris en charge et qui peut être lu par IronBarcode. Pour en savoir plus sur les types de codes-barres pris en charge par IronBarcode, les utilisateurs peuvent se référer à ceci article.

L'extrait de code ci-dessous montre comment les utilisateurs peuvent récupérer les valeurs du code-barres ainsi que le type de code-barres dans une image en imprimant les valeurs sur la console.

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-BarcodeType.cs
using IronBarCode;
using System;

// Read barcode from PNG
BarcodeResults result = BarcodeReader.Read("bc3.png");

// Output barcode type to console
foreach (BarcodeResult barcode in result)
{
    Console.WriteLine("The barcode value is " + barcode.ToString() + " and the barcode type is " + barcode.BarcodeType);
}
Imports IronBarCode
Imports System

' Read barcode from PNG
Private result As BarcodeResults = BarcodeReader.Read("bc3.png")

' Output barcode type to console
For Each barcode As BarcodeResult In result
	Console.WriteLine("The barcode value is " & barcode.ToString() & " and the barcode type is " & barcode.BarcodeType)
Next barcode
VB   C#

Dans l'extrait de code ci-dessus, nous avons effectué la lecture du code-barres en appelant BarcodeReader.Read() sur l'image d'entrée. Cet objet renvoie l'objet BarcodeResults qui contient tous les BarcodeResults issus de la lecture de tous les codes-barres disponibles dans l'image. Ensuite, nous itérons à travers l'objet BarcodeResults pour récupérer le BarcodeResult et obtenir la valeur du code-barres et le type de code-barres imprimés sur la console.

Valeur binaire

En utilisant IronBarcode, les utilisateurs peuvent également récupérer le tableau d'octets de la valeur du code-barres en récupérant la propriété BinaryValue de l'objet BarcodeResult. Cela permet aux utilisateurs de manipuler la valeur du code-barres à l'intérieur du programme.

L'extrait de code ci-dessous illustre l'un des cas d'utilisation de la récupération de la valeur du code-barres sous forme de données binaires

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-BinaryValue.cs
using IronBarCode;

// Read barcode from PNG
BarcodeResults result = BarcodeReader.Read("multiple-barcodes.png");

int i = 1;
foreach (BarcodeResult barcode in result)
{
    var binaryValue = barcode.BinaryValue;
    var barcodeType = IronBarCode.BarcodeEncoding.QRCode;

    // Create QR code
    GeneratedBarcode generatedBarcode = BarcodeWriter.CreateBarcode(binaryValue, barcodeType);

    // Export QR code
    generatedBarcode.SaveAsPng($"qrFromBinary{i}.png");
    i++;
}
Imports IronBarCode

' Read barcode from PNG
Private result As BarcodeResults = BarcodeReader.Read("multiple-barcodes.png")

Private i As Integer = 1
For Each barcode As BarcodeResult In result
	Dim binaryValue = barcode.BinaryValue
	Dim barcodeType = IronBarCode.BarcodeEncoding.QRCode

	' Create QR code
	Dim generatedBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode(binaryValue, barcodeType)

	' Export QR code
	generatedBarcode.SaveAsPng($"qrFromBinary{i}.png")
	i += 1
Next barcode
VB   C#

En observant l'extrait de code ci-dessus, nous avons créé un programme simple qui transforme essentiellement les multiples codes-barres d'une image en nouvelles images distinctes de codes QR. Dans un premier temps, nous scannons les codes-barres de l'échantillon d'image PNG. Une fois ces codes-barres détectés, nous les parcourons, accédons à la propriété BinaryValue et l'utilisons pour créer de nouveaux codes-barres QR.

Coordonnées du code-barres, hauteur et largeur

Une autre propriété de l'objet BarcodeResult à laquelle les utilisateurs peuvent accéder est les coordonnées du code-barres, y compris X1, Y1, et X2, Y2, ainsi que sa Hauteur et Largeur au sein d'un fichier image ou d'un document. Ces propriétés s'avèrent très utiles lorsque les utilisateurs ont besoin de récupérer des informations sur l'emplacement et les dimensions du code-barres. Utilisons une illustration pour mettre en évidence l'emplacement et les dimensions du code-barres.

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-height-width.cs
using IronBarCode;
using IronSoftware.Drawing;
using System.Linq;

// Read barcode from PNG
BarcodeResults result = BarcodeReader.Read("multiple-barcodes.png");

AnyBitmap bitmap = AnyBitmap.FromFile("multiple-barcodes.png");

foreach (BarcodeResult barcode in result)
{
    PointF[] barcodePoints = barcode.Points;

    float x1 = barcodePoints.Select(b => b.X).Min();
    float y1 = barcodePoints.Select(b => b.Y).Min();

    Rectangle rectangle = new Rectangle((int)x1, (int)y1, (int)barcode.Width!, (int)barcode.Height!);

    bitmap = bitmap.Redact(rectangle, Color.Magenta);

    // Save the image
    bitmap.SaveAs("redacted.png", AnyBitmap.ImageFormat.Png);
}
Imports System
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.Linq

' Read barcode from PNG
Private result As BarcodeResults = BarcodeReader.Read("multiple-barcodes.png")

Private bitmap As AnyBitmap = AnyBitmap.FromFile("multiple-barcodes.png")

For Each barcode As BarcodeResult In result
	Dim barcodePoints() As PointF = barcode.Points

	Dim x1 As Single = barcodePoints.Select(Function(b) b.X).Min()
	Dim y1 As Single = barcodePoints.Select(Function(b) b.Y).Min()

'INSTANT VB TODO TASK: There is no VB equivalent to the C# 'null-forgiving operator':
'ORIGINAL LINE: Rectangle rectangle = new Rectangle((int)x1, (int)y1, (int)barcode.Width!, (int)barcode.Height!);
	Dim rectangle As New Rectangle(CInt(Math.Truncate(x1)), CInt(Math.Truncate(y1)), CInt(barcode.Width), CInt(barcode.Height))

	bitmap = bitmap.Redact(rectangle, Color.Magenta)

	' Save the image
	bitmap.SaveAs("redacted.png", AnyBitmap.ImageFormat.Png)
Next barcode
VB   C#
Exemple d'entrée avant expurgation
Image expurgée

L'extrait de code ci-dessus permet d'expurger plusieurs codes-barres présents dans un fichier image. Pour ce faire, nous avons utilisé une combinaison de deux bibliothèques, à savoir IronBarcode et IronDrawing. Pour obtenir l'objet BarcodeResult et en extraire les propriétés, nous lisons d'abord les codes-barres disponibles dans un fichier image en utilisant BarcodeReader.Read() méthode. Parallèlement, le fichier image d'entrée doit également être converti en objet AnyBitmap afin d'utiliser et d'appliquer la méthode de rédaction sur l'image. Une fois que nous avons l'objet BarcodeResults, nous pouvons appliquer une boucle et itérer à travers lui pour obtenir les X1, Y1, Width, et Height de chaque code-barres disponible dans l'image et les utiliser comme propriétés CropRectangle dans l'objet AnyBitmap.Redact()` méthode.

Numéro de page

Les utilisateurs peuvent également récupérer le numéro de page où le code-barres a été trouvé. Il s'agit d'une fonction utile pour les utilisateurs qui cherchent à utiliser un document multipage contenant plusieurs codes-barres et qui ont besoin de connaître l'emplacement des codes-barres trouvés dans le document en vue d'un traitement ultérieur.

Examinons l'extrait de code ci-dessous :

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-page-number.cs
using IronBarCode;
using System;

// Read barcode from PDF
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");

// Output page number to console
foreach (BarcodeResult barcode in result)
{
    Console.WriteLine("The barcode value " + barcode.ToString() + " is found on page number " + barcode.PageNumber);
}
Imports IronBarCode
Imports System

' Read barcode from PDF
Private result As BarcodeResults = BarcodeReader.ReadPdf("test.pdf")

' Output page number to console
For Each barcode As BarcodeResult In result
	Console.WriteLine("The barcode value " & barcode.ToString() & " is found on page number " & barcode.PageNumber)
Next barcode
VB   C#

L'extrait de code simple ci-dessus illustre un cas d'utilisation où les utilisateurs ont besoin que le programme renvoie la valeur des codes-barres trouvés dans un document PDF multipage, ainsi que ses numéros de page. L'extrait de code ci-dessus utilise BarcodeReader.ReadPdf() pour lire les codes-barres dans un document PDF multipage, qui renvoie un objet BarcodeResults contenant tous les BarcodeResults trouvés dans le document. Appliquer la boucle et itérer sur chaque élément de l'objet pour récupérer la valeur des codes-barres et le numéro de page où les codes-barres ont été trouvés. En dehors de ce cas d'utilisation, les utilisateurs peuvent également utiliser cette propriété pour vérifier si tous les codes-barres d'un document ont pu être lus.

A noter
La valeur renvoyée par cette propriété est basée sur 1, ce qui signifie que la première page est toujours une et non pas zéro

Rotation du code-barres et orientation de la page

En utilisant IronBarcode, les utilisateurs sont également en mesure de récupérer des informations sur l'orientation du code-barres ainsi que sur l'orientation de la page où le code-barres a été trouvé. Pour extraire ces deux informations, les utilisateurs peuvent récupérer les propriétés Rotation et PageOrientation de l'objet BarcodeResult. Rotation renvoie un entier qui représente l'angle de rotation du code-barres trouvé. Cependant, il faut tenir compte du fait que

Examinons l'extrait de code ci-dessous :

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-orientation.cs
using IronBarCode;
using System;

// Read barcode from PDF
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");

// Output page orientation and rotation to console
foreach (BarcodeResult barcode in result)
{
    Console.WriteLine(barcode.Value);
    Console.WriteLine(barcode.PageOrientation);
    Console.WriteLine(barcode.Rotation);
}
Imports IronBarCode
Imports System

' Read barcode from PDF
Private result As BarcodeResults = BarcodeReader.ReadPdf("test.pdf")

' Output page orientation and rotation to console
For Each barcode As BarcodeResult In result
	Console.WriteLine(barcode.Value)
	Console.WriteLine(barcode.PageOrientation)
	Console.WriteLine(barcode.Rotation)
Next barcode
VB   C#

L'extrait de code simple ci-dessus a été exécuté avec l'exemple de PDF joint pour prouver que les utilisateurs peuvent récupérer l'orientation de la page et la rotation du code-barres en obtenant la valeur de BarcodeResult.PageOrientation et BarcodeResult.Rotation respectivement. Cette fonction est principalement utile pour le débogage.

[{i :(IronBarcode peut uniquement lire les codes-barres de rotation 0, 90, 180 et 270 degrés. IronBarcode ne renverra aucune valeur si le code-barres a une valeur de rotation autre que celle mentionnée. PageOrientation renvoie une valeur dePageOrientation qui consiste en Portrait ou Paysage.)}]

Texte et valeur

Bien entendu, la principale propriété que les utilisateurs voudront récupérer lorsqu'ils utiliseront IronBarcode, c'est de connaître sa valeur et son texte. Ces deux propriétés sont souvent utilisées de manière interchangeable et renvoient la même valeur. En outre, les utilisateurs peuvent également utiliser BarcodeResult.ToString() pour obtenir le même résultat. L'extrait de code ci-dessous en est la démonstration :

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-text-value.cs
using IronBarCode;
using System;

// Read barcode from PDF
BarcodeResults result = BarcodeReader.ReadPdf("barcodestamped3.pdf");

// Output text value to console
foreach (BarcodeResult barcode in result)
{
    Console.WriteLine(barcode.Value);
    Console.WriteLine(barcode.Text);
    Console.WriteLine(barcode.ToString());
}
Imports IronBarCode
Imports System

' Read barcode from PDF
Private result As BarcodeResults = BarcodeReader.ReadPdf("barcodestamped3.pdf")

' Output text value to console
For Each barcode As BarcodeResult In result
	Console.WriteLine(barcode.Value)
	Console.WriteLine(barcode.Text)
	Console.WriteLine(barcode.ToString())
Next barcode
VB   C#

D'après l'extrait de code ci-dessus, les utilisateurs n'ont besoin que de quelques lignes de code pour lire un code-barres dans une image à l'aide d'IronBarcode. Après avoir parcouru les BarcodeResults renvoyés par BarcodeReader.Read(), nous affichons sur la console le résultat de l'obtention des propriétés value et text, ainsi que l'appel à BarcodeResult.ToString() pour montrer que toutes ces méthodes renvoient la même valeur.

En résumé, IronBarcode est une API parfaite permettant aux utilisateurs d'effectuer de multiples opérations concernant les codes-barres, et ne se limitant pas seulement à l'écriture et au décodage des codes-barres. Grâce à la prise en charge de divers formats de données de sortie, les utilisateurs peuvent faire beaucoup plus avec l'objet BarcodeResult renvoyé par IronBarcode.

Hairil related to Texte et valeur

Hairil Hasyimi Bin Omar

Ingénieur logiciel

Comme tous les grands ingénieurs, Hairil est un fervent apprenant. Il affine ses connaissances en C#, Python et Java, et les utilise pour apporter une valeur ajoutée aux membres de l'équipe d'Iron Software. Hairil a rejoint l'équipe d'Iron Software en provenance de l'Universiti Teknologi MARA en Malaisie, où il a obtenu une licence en génie chimique et des procédés.