Comment éditer des formats de données

Hairil related to Comment éditer des formats de données
Hairil Hasyimi Bin Omar
octobre 19, 2023
Mise à jour décembre 10, 2024
Partager:
This article was translated from English: Does it need improvement?
Translated
View the article in English

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 incluent 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 stocke diverses propriétés utiles. Ces propriétés sont énumérées ci-dessous :

  • BarcodeImage
  • TypeDeCodeBarres
  • ValeurBinaire
  • Coordonnées, hauteur et largeur
  • PageNumber
  • Barcode et PageOrientation
  • Texte et valeur

Image de code-barres

Une fois qu'IronBarcode effectue 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 code-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")
$vbLabelText   $csharpLabel

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 où nous stockons les informations de la propriété BarcodeImage. Enfin, nous utilisons cette liste pour générer un TIFF multi-pages en utilisant la méthode CreateMultiFrameTiff.

A noter
La propriété BarcodeImage de BarcodeResult ne stocke que les images des codes-barres trouvés lors de la lecture et non l'image entière 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 dans IronBarcode, les utilisateurs peuvent consulter cet 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
$vbLabelText   $csharpLabel

À partir de l'extrait de code ci-dessus, nous avons effectué la lecture du code-barres en appelant la méthode BarcodeReader.Read() sur l'image d'entrée. Cela renvoie un objet BarcodeResults qui stocke tous les BarcodeResult provenant de la lecture de tous les codes-barres disponibles dans l'image. Ensuite, nous parcourons l'objet BarcodeResults pour récupérer le BarcodeResult et obtenir la valeur du code-barres ainsi que le type de code-barres imprimé 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
$vbLabelText   $csharpLabel

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 que nous avons détecté ces codes-barres, nous les parcourons, accédons à la propriété BinaryValue, et l'utilisons ensuite pour créer de nouveaux codes 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, ainsi que X2, Y2, ainsi que sa Hauteur et sa Largeur dans un fichier image ou 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
$vbLabelText   $csharpLabel
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 extraire ses propriétés, nous lisons d'abord les codes-barres disponibles dans un fichier image en utilisant la méthode BarcodeReader.Read(). En même temps, le fichier image d'entrée doit également être converti en objet AnyBitmap afin d'utiliser et d'appliquer la méthode d'expurgation sur l'image. Une fois que nous avons l'objet BarcodeResults, nous pouvons appliquer une boucle et itérer à travers celui-ci 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 la méthode AnyBitmap.Redact().

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
$vbLabelText   $csharpLabel

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. Le fragment de code ci-dessus a utilisé la méthode BarcodeReader.ReadPdf() pour lire les codes-barres à l'intérieur d'un document PDF multipage, ce qui a renvoyé un objet BarcodeResults qui a stocké chaque BarcodeResult trouvé 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 à base 1, ce qui signifie que la première page est toujours un et non zéro.

Rotation du code-barres et orientation de la page

En utilisant IronBarcode, les utilisateurs peuvent également 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 2 informations, les utilisateurs peuvent récupérer à partir des propriétés Rotation et PageOrientation de l'objet BarcodeResult. Rotation renverra 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
$vbLabelText   $csharpLabel

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

[{i:(IronBarcode peut uniquement lire les codes-barres avec une rotation de 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 retournera un objet PageOrientation, qui consiste en Portrait ou Paysage.

Texte et valeur

Bien sûr, la propriété principale que les utilisateurs voudront récupérer en utilisant IronBarcode, 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 dehors de cela, les utilisateurs peuvent également utiliser la méthode 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
$vbLabelText   $csharpLabel

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 itéré à travers les BarcodeResults retournés par la méthode BarcodeReader.Read(), nous affichons dans la console le résultat de l'obtention des propriétés value et text, ainsi que l'appel de la méthode BarcodeResult.ToString() pour montrer que tout cela a retourné 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. Avec divers formats de données de sortie pris en charge, les utilisateurs peuvent faire bien plus avec l'objet BarcodeResult retourné par IronBarcode.

Hairil related to Texte et valeur
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.