Comment lire des codes-barres à partir d'objets System.Drawing

Hairil Hasyimi Bin Omar
Hairil Hasyimi Bin Omar
septembre 13, 2023
Mise à jour décembre 10, 2024
Partager:
This article was translated from English: Does it need improvement?
Translated
View the article in English

Les objets System.Drawing sont largement utilisés dans .NET pour les tâches liées au traitement des images par les développeurs. Toutefois, Microsoft a interrompu le support de System.Drawing sur d'autres systèmes d'exploitation, tels que MacOS et Linux, et prend désormais exclusivement en charge Windows. Ce changement important a causé de nombreux problèmes aux développeurs qui utilisent IronBarcode sur des systèmes d'exploitation autres que Windows. C'est parce que le travail avec les codes-barres implique généralement l'utilisation d'objets tels que graphiques, images et polices.

Pour résoudre ce problème, nous avons introduit une solution alternative : IronDrawing. Cette bibliothèque gratuite et open-source, initiée par IronSoftware, vise à simplifier le processus de fonctionnement sur des systèmes d'exploitation autres que Windows. Cela permet à nos utilisateurs de bénéficier d'une expérience conviviale. Une fois IronBarcode installé depuis NuGet, IronDrawing sera automatiquement inclus dans votre projet.

Commencer avec IronBarcode

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

Première étape :
green arrow pointer


Cast System.Drawing vers AnyBitmap

La lecture de codes-barres à partir de System.Drawing implique simplement de couler l'objet en AnyBitmap. IronDrawing a été conçu dans un souci de facilité d'utilisation. Par conséquent, IronDrawing prend en charge le casting implicite pour les objets image de System.Drawing vers les objets image IronSoftware.Drawing appelés AnyBitmap.

Outre les objets System.Drawing, nous prenons également en charge le moulage à partir d'autres types d'objets, notamment :

  • System.Drawing.Bitmap
  • System.Drawing.Image
  • SkiaSharp.SKBitmap
  • SkiaSharp.SKImage
  • SixLabors.ImageSharp

    Les utilisateurs peuvent se référer à l'exemple de code suivant pour convertir les objets ci-dessus. Ci-dessous se trouve un extrait de code qui montre comment convertir des images de codes-barres à partir des objets System.Drawing en IronSoftware.Drawing.AnyBitmap.

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-system-drawing-cast-to-anybitmap.cs
using IronSoftware.Drawing;
using System.Collections.Generic;

List<AnyBitmap> barcodes = new List<AnyBitmap>();

// Instantiate System.Drawing.Bitmap
System.Drawing.Bitmap bitmapFromBitmap = new System.Drawing.Bitmap("test1.jpg");

// Cast from System.Drawing.Bitmap to AnyBitmap
AnyBitmap barcode1 = bitmapFromBitmap;

barcodes.Add(barcode1);

// Instantiate System.Drawing.Bitmap
System.Drawing.Image bitmapFromFile = System.Drawing.Image.FromFile("test2.png");

// Cast from System.Drawing.Image to AnyBitmap
AnyBitmap barcode2 = bitmapFromFile;

barcodes.Add(barcode2);

À partir de l'extrait de code ci-dessus, nous avons chargé deux images de code-barres en tant que System.Drawing.Bitmap et System.Drawing.Image. Nous les transformons ensuite implicitement en AnyBitmap en les assignant simplement à des objets AnyBitmap. Ensuite, nous avons ajouté ces objets à une liste AnyBitmap.

Lire les codes-barres de AnyBitmap

IronBarcode peut facilement accepter des objets IronSoftware.Drawing.AnyBitmap dans toutes ses méthodes sans nécessiter de configuration supplémentaire. Cela offre une facilité d'utilisation aux développeurs qui utilisent IronBarcode avec des objets System.Drawing qui ne sont pas pris en charge sur les systèmes d'exploitation autres que Windows. L'extrait de code ci-dessous montre comment procéder.

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-system-drawing-read-anybitmap.cs
using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;

List<AnyBitmap> barcodes = new List<AnyBitmap>();

System.Drawing.Bitmap bitmapFromBitmap = new System.Drawing.Bitmap("test1.jpg");
AnyBitmap barcode1 = bitmapFromBitmap;
barcodes.Add(barcode1);

System.Drawing.Image bitmapFromFile = System.Drawing.Image.FromFile("test2.png");
AnyBitmap barcode2 = bitmapFromFile;
barcodes.Add(barcode2);

foreach (var barcode in barcodes)
{
    // Read the barcode
    var results = BarcodeReader.Read(barcode);
    foreach (var result in results)
    {
        // Output the detected barcode value
        Console.WriteLine(result.Value);
    }
}

L'extrait de code ci-dessus est une extension du précédent. Une fois que nous avons rempli la liste AnyBitmap, nous avons parcouru la liste et appelé la méthode Read sur chaque objet AnyBitmap en tant que paramètre, ce qui a ensuite renvoyé IronBarcode.BarcodeResults. Nous avons ensuite itéré à travers l'objet retourné pour imprimer la valeur du code-barres sur la console.

La zone de fonctionnalité dans IronSoftware.Drawing ne se limite pas uniquement au rendu des images. Il est également largement utilisé dans d'autres aspects du traitement d'image, tels que les couleurs et les polices qui sont utiles pour styliser les codes-barres et les codes QR. Les utilisateurs peuvent explorer comment nous utilisons IronDrawing pour personnaliser et ajouter des logos aux codes QR.

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.